h5级联下拉、分类筛选

级联下拉列表框这种常见的需求,相信大家都经常遇到,下面两种写法都曾运用在项目,测试是没问题,但代码可能不是最好的,亲如果有更好的建议,请留言给我哦~一起探讨

注:数据若为 省市 数据,可利用省市联动的特殊性(如省市县的国标编码,按每2位直接切断判断),但这里不做讨论,亲们有兴趣可以查阅相关资料

第一种:强调复用性

  1. 采用jQuery
    利用class作为识别符,将级联下拉列表框选出来。
    当选项发生变化的时候,调用Ajax,访问对应的数据文件(.txt)。然后,将数据文件解析后的数据加入到下一个下拉列表框,以此类推,所有的下拉列表框都可以做到级联。
  2. 数据采用txt
    对于相对固定的数据可以采用txt来作为数据源,每次发布的时候都无需重新启动服务器。但是对于数据源为动态源的情况,需要访问数据库。这时候只要修改对应的ajax访问URL即可。

** 结论:采用高度抽象以后,每增加一个下拉列表框只需要2行即可,1行用来声明下拉列表框,另一行用来定义下一个响应的下拉列表框ID。**

为了本文的可读性,这里给出关键的代码,需要全部代码的可以拉到最下面查看复制
js

$(document).ready(function(){
    
    $(".cascade_drop_down").change(
        function () {
            var name = $(this).attr("name") + "_next";
            var next = $("#" + name).val();
            if (next == null || next == '') {
                return;
            }
            
            $("#" + next).empty();

            $.ajax({
                type:'post',
                url: $(this).val() + '.txt',
                data:'name=' + name + '&val=' + $(this).val(),
                dataType:'text',
                success:function(msg){
                    ops = msg.split("\n");
                    for (i = 0; i < ops.length; i++) {
                        $("#" + next).append(ops[i]);
                    }
                },
                error:function(){
                    alert("failed.");
                }
            });
        }
    )
    
});

html

<div>
<input type="hidden" id="province_next" name="province_next" value="city">
<input type="hidden" id="city_next" name="city_next" value="">

<select id="province" name="province" class="cascade_drop_down">
    <option value="beijing">北京</option>
    <option value="tianjin">天津</option>
    <option value="shanghai">上海</option>
</select>

<select id="city" name="city" class="cascade_drop_down">
</select>
</div>

第二种: html5分类筛选、级联下拉

WechatIMG95.jpeg

1、数据采用json
对于相对固定的数据可以采用json来作为数据源,每次发布的时候都无需重新启动服务器。但是对于数据源为动态源的情况,需要访问数据库。这时候只要修改数据路径

2、每个事件独立,通过事件委托解决动态添加的子集也拥有对应的事件
代码对类名的依赖性比较强,理解起来相对简单,使用时可以根据需求更改完善

详细代码打包下载:https://coding.net/u/Jill/p/dankal-jill/git

查阅资料
https://home.cnblogs.com/u/stephen-wang/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,688评论 0 17
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,126评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,273评论 4 61
  • 很多人都一直很注重自己的口腔保健,不仅仅是因为要防止蛀牙,更因为口腔的健康和我们的整体健康密切相关。 中医里讲,齿...
    明莹阅读 7,429评论 1 6
  • 接下来就是张罗着要进城了,委托了城里的幺奶奶帮忙找了房子,一楼,大通间,中间隔了一道水泥墙,里面就是卧室,外面就是...
    瓦哨阅读 223评论 0 1