无限级联 下拉框的实现 ... 呜呜呜

    xiaoxiao2022-06-30  50

    <script> var json__categories = <?php echo $json__categories; ?> ; //log(json__categories); //查找分类 function findcg(id){ var cg = null , hadFind = false; xu.array.each(json__categories['refs'],function(item,index){ if (hadFind) return ; if (item.id == id) cg = item ; }); return cg ; } //改变分类 function chcg(o){ if (!xu.verify._obj(o)) return ; //首先取得选中的id,,再查该id下是否存在子节点 var cid = o.value;log(cid); if (!cid) { // 缺省值时清空节点尾部所有select $eo(o).removeAfterAll(); } //在json中定位该id所对应的节点 var categorie = findcg(cid);//log(categorie); if (!categorie) return ; //查当前节点的父节点,这个似乎不用考虑,每个节点只用管理其直接子节点 //查当前节点下是否存在子节点,存在'sons'说明有子节点,创建一个下拉框并追加到尾部 if (categorie['sons']){ //清空创建的子select对象 var subCategories = categorie['sons']; $new_slt = $eo.create('select'); $new_slt.on('change',function(){ // this <-> $new_slt chcg(this); }); add_opt($new_slt.ele,'选择子分类','',0); var start = 1;// 选项计数 xu.array.each(subCategories,function(item){ add_opt($new_slt.ele,item.name,item.id,start); start ++ ; }); $eo(o).removeAfterAll().insertAfter($new_slt.ele); }else { $eo(o).removeAfterAll(); } } function add_opt(slt_obj,opt_txt,opt_value,index){ slt_obj.options[index] = new Option(opt_txt,opt_value); } function clear_opts(slt_obj){ // 原有选项计数 var len = slt_obj.options.length; for (var i=0; i < len; i++) slt_obj.options[0] = null;// 移除当前选项 } xu.ready(function(){ //设置分类的项 -- 首先设置初值项,取第一级分类 (function(){ if (!xu.verify._obj(json__categories)) { chcg = function(){} ;return ; } var start = 1;// 选项计数 xu.array.each(json__categories['tree'],function(item){ add_opt($eo('article-categorie').ele,item.name,item.id,start); start ++ ; }); })(); }); </script>

     今天没有时间 抽出来了,下周抽出来 ... 我我我我

     

     

    转载请注明原文地址: https://ju.6miu.com/read-1125696.html

    最新回复(0)