You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 5.7 KiB

4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. # jQuery cxSelect
  2. cxSelect 是基于 jQuery 的多级联动菜单插件,适用于省市、商品分类等联动菜单。
  3. 列表数据通过 AJAX 获取,也可以自定义,数据内容使用 JSON 格式。
  4. 同时兼容 Zepto,方便在移动端使用。
  5. 国内省市县数据来源:[basecss/cityData](https://github.com/basecss/cityData) Date: 2014.03.31
  6. 全球主要城市数据来源:整理国内常用网站和软件 Date: 2014.07.29
  7. **版本:**
  8. * jQuery v1.7+ | Zepto v1.0+
  9. * jQuery cxSelect v1.4.0
  10. 文档:http://code.ciaoca.com/jquery/cxselect/
  11. 示例:http://code.ciaoca.com/jquery/cxselect/demo/
  12. ## 使用方法
  13. ### 载入 JavaScript 文件
  14. ```html
  15. <script src="jquery.js"></script>
  16. <script src="jquery.cxselect.js"></script>
  17. ```
  18. ### DOM 结构
  19. ```html
  20. <!--
  21. select 必须放在元素 id="element_id" 的内部,不限层级
  22. select 的 class 任意取值,也可以附加多个 class,如 class="province otherclass",在调用时只需要输入其中一个即可,但是不能重复
  23. -->
  24. <div id="element_id">
  25. <select class="province"></select>
  26. <select class="city"></select>
  27. <select class="area"></select>
  28. </div>
  29. ```
  30. ### 设置默认值
  31. ```html
  32. <!--
  33. 方法一:使用 option 的 value 和 selected 属性
  34. -->
  35. <select class="province">
  36. <option value="浙江省" selected>浙江省</option>
  37. </select>
  38. <!--
  39. 方法二:使用 select 的 data-value 属性
  40. 当同时设置 option 的 value 和 select 的 data-value 时,优先使用 data-value 的值
  41. -->
  42. <select class="province" data-value="浙江省"></select>
  43. ```
  44. ### 调用 cxSelect
  45. ``` javascript
  46. $('#element_id').cxSelect({
  47. url: 'cityData.min.json' // 提示:如果服务器不支持 .json 类型文件,请将文件改为 .js 文件
  48. selects: ['province', 'city', 'area'], // selects 为数组形式,请注意顺序
  49. emptyStyle: 'none'
  50. });
  51. ```
  52. ### 设置参数全局默认值
  53. ``` javascript
  54. // 需在引入 <script src="jquery.cxselect.js"></script> 之后,调用之前设置
  55. $.cxSelect.defaults.url = 'cityData.min.json';
  56. $.cxSelect.defaults.emptyStyle = 'none';
  57. ```
  58. ### API 接口
  59. ``` javascript
  60. var cxSelectApi;
  61. // 方法一:
  62. cxSelectApi = $.cxSelect($('#element_id'), {
  63. selects: ['province', 'city', 'area']
  64. });
  65. // 方法二:
  66. $('#element_id').cxSelect({
  67. selects: ['province', 'city', 'area']
  68. }, function(api) {
  69. cxSelectApi = api;
  70. });
  71. cxSelectApi.attach();
  72. cxSelectApi.detach();
  73. cxSelectApi.clear();
  74. cxSelectApi.setOptions();
  75. ```
  76. ## 参数说明
  77. 名称|默认值|说明
  78. ---|---|---
  79. selects|[]|下拉选框组。<br>输入 select 的 className
  80. url|null|整合数据接口地址(URL);<br>每个选框的内容使用各自的接口地址,详见 [DEMO](http://code.ciaoca.com/jquery/cxselect/demo/oneself.html)
  81. data|null|自定义数据,类型为数组,使用 JSON 格式。[DEMO](http://code.ciaoca.com/jquery/cxselect/demo/custom.html)
  82. emptyStyle|null|子集无数据时 select 元素的显示状态。<br>可设置为:**"none"**(display:none), **"hidden"**(visibility:hidden)
  83. required|false|是否为必选。<br>设为 `false` 时,会在列表头部添加 `<option value="firstValue">firstTitle</option>` 选项。
  84. firstTitle|'请选择'|选框第一个项目的标题(仅在 `required` 为 `false` 时有效)
  85. firstValue|''|选框第一个项目的值(仅在 `required` 为 `false` 时有效)
  86. jsonSpace|''|数据命名空间
  87. jsonName|'n'|数据标题字段名称(用于 option 的标题)
  88. jsonValue|''|数据值字段名称(用于 option 的 value,没有值字段时使用标题作为 value)
  89. jsonSub|'s'|子集数据字段名称
  90. ## data 属性参数
  91. ### 父元素的 data- 属性
  92. ```html
  93. <div id="element_id" data-url="cityData.min.json" data-required="true"></select>
  94. ```
  95. 名称|说明
  96. ---|---
  97. data-selects|下拉选框组。<br>输入 select 的 className,使用英文逗号分隔的字符串
  98. data-url|列表数据接口地址
  99. data-empty-style|子集无数据时 select 的显示状态
  100. data-required|是否为必选
  101. data-first-title|选框第一个项目的标题
  102. data-first-value|选框第一个项目的值
  103. data-json-space|数据命名空间
  104. data-json-name|数据标题字段名称
  105. data-json-value|数据值字段名称
  106. data-json-sub|子集数据字段名称
  107. ### select 元素的 data- 属性
  108. ```html
  109. <select class="province" data-value="浙江省" data-first-title="选择省"></select>
  110. ```
  111. 名称|说明
  112. ---|---
  113. data-value|默认选中值
  114. data-url|列表数据接口地址
  115. data-required|是否为必选
  116. data-query-name|传递上一个选框值的参数名称(默认使用上一个选框的 name 属性值)
  117. data-first-title|选框第一个项目的标题
  118. data-first-value|选框第一个项目的值
  119. data-json-space|数据命名空间
  120. data-json-name|数据标题字段名称
  121. data-json-value|数据值字段名称
  122. ##API 接口
  123. 名称|说明
  124. ---|---
  125. attach()|绑定。<br>调用时会自动进行绑定,用于使用detach解除绑定后,进行重新绑定。
  126. detach()|解除绑定。<br>解除绑定后,不再具有联动效果。
  127. clear(index)|清空选项。<br>清空第 index 个 select 自身及之后的 select 的选项。<br>`index`: select 的序号,从 0 开始
  128. setOptions(settings)|重新设置参数。<br>`settings`: 与调用时参数一致
  129. ##自定义数据及使用纯数组数据
  130. 可以使用任何类型的数据作为值,但最终都会被转化为文本。
  131. [自定义数据 DEMO](http://code.ciaoca.com/jquery/cxselect/demo/custom.html)
  132. ##各选项数据接口独立
  133. 可以为每个```select```设置一个接口,根据接口返回的数据结构,设置```json-space```、```json-name```、```json-value```适应 JSON 结构(包括纯数组)。
  134. 当页面加载时,第一个选框已有选项数据,可以不设置第一个选框的接口。
  135. [独立接口 DEMO](http://code.ciaoca.com/jquery/cxselect/demo/oneself.html)