拥抱代码

网站首页日常笔记心情随笔关于本站

JQuery 使用 json 生成无限级级联特效

作者:伤无痕 时间:2019-07-04 浏览:12 分类:web前端
<div class="selectBox">

</div>
<input type="hidden" name="test" id="selectVal">
<script>
var default_val = -1;

$(function () {
        var one_array=[{"id":1,"name":"11111","child":[{"id":4,"name":"1-44444"},{"id":5,"name":"1-55555"},{"id":6,"name":"1-66666"}]},{"id":2,"name":"22222","child":[{"id":7,"name":"2-77777"},{"id":14,"name":"-14--14"},{"id":140,"name":"-140--14"},{"id":8,"name":"2-88888","child":[{"id":13,"name":"-13--13","child":[{"id":99,"name":"99-99"},{"id":100,"name":"100"},{"id":101,"name":"101"},{"id":102,"name":"102"}]}]}]},{"id":3,"name":"33333","child":[{"id":9,"name":"3-99999"},{"id":10,"name":"3-10--10"},{"id":11,"name":"3-11--11"}]},{"id":12,"name":"12--12"}];

    var box = $("div.selectBox");
    var depth=[];
    if(default_val>=0){
        function ifInObject(arr,value, len) {
            for (var i = 0; i < arr.length; i++) {
                if(arr[i]['id'] == value){
                    len.push(i);
                    depth = len; break;
                }else if (arr[i]['child'] && depth.length == 0) {
                    len.push(i);
                    ifInObject(arr[i]['child'], value, len);
                    if(lowermost(arr[i]['child'])){len = [];}
                }
            }
        }
        ifInObject(one_array, default_val, []);
    }

    console.log(depth)
    if(depth.length){
        var array = one_array;
        $.each(depth, function(index,value){
            forData(array, value);
            if(index + 1 < depth.length) array = array[value]['child'];
        });
        $("#selectVal").val(default_val)

    }else{
        forData(one_array, -1);
    }

    $(document).on('change', 'select', function () {
        $(this).nextAll().remove();
        var array = one_array;
        $("select").each(function () {
            var index = $(this).find('option:selected').index() - 1;
            if(array[index]['child']){ array = array[index]['child']; }else{ array = ''; }
        });
        forData(array, -1);
        $("#selectVal").val($(this).val())
    });

    function forData(array, defval) {
        if(array){
            var html='';
            for (var i=0;i<array.length;i++){
                var selected = defval == i ? ' selected' : '';
                html += "<option value='"+array[i]['id']+"'"+selected+">"+array[i]['name']+"</option>";
            }
            box.append('<select><option value=\'0\'>请选择分类</option>'+html+'</select>');
        }
    }

    function lowermost(arr) {
        var res = false;
        for (var i=0;i<arr.length;i++){
            if(arr[i]['child'] && arr[i]['child'].length){
                res = true; break;
            }
        }
        return true;
    }

});
</script>
更多

精彩文章

  • 2019-07-11Javascript设置cookie 之 js-cookie 插件
  • 2019-07-04JQuery 使用 json 生成无限级级联特效
  • 2019-03-25整理收集常用的JS方法,以便日后使用
分类标签
版本控制linuxphppythonnginxmysqlweb前端docker程序杂谈redis全文搜索
文件归档
2019年
02月 03月 04月 05月 06月 07月 08月 09月 10月 11月 12月
2020年
01月 02月 03月 04月
推荐信息
热门文章
Docker 安装启动 ElasticSearch 及 head 管理工具mysql 查询一个不存在的字段并赋值,追加(添加)一个字段并指定值ElasticSearch-head 管理工具查询报 406 错误码nginx 访问时判断文件不存在时进行跳转或 rewritecentos7 安装 ftp(vsftpd) 服务、基本配置及创建用户python获取关键词在百度搜索引擎的排名yii2框架查询方法 andFilterWhere 踩过的坑解决docker容器vim报错 bash: vim: command not found 问题python:xpinyin 将中文汉字翻译成拼音Yii2 runAction 调用其他控制器方法及传递参数
博客信息

建站时间:2019年02月01日

文章统计:129篇文章

访问统计:1.4万次

微信公众号:扫描二维码,关注我们

主持博主

请留下赞助人姓名和联系人方式,以示感谢,如有需求,优先帮助。

您的支持是我们最大的动力!

支付宝微信

关于本站

写这个博客为了记录生活、学习中的点滴。希望大家多多支持!

本博客文章均为原创,转载请注明出处!

联系方式

拥抱代码 伤无痕

lavebaby_xw

huyashuai@foxmail.com

更多推荐

  • 网站首页
  • 日常笔记
  • 心情随笔
  • 关于本站
  • 网站邻居
  • 给我留言
伤无痕博客京ICP备19018814号-1Copyright © 2019