BootStrap无限级分类(无限极分类封装版)
HTML部分
<!DOCTYPEhtml> <html> <headlang="en"> <metacharset="UTF-8"> <title>多级联动封装</title> <linkhref="./css/bootstrap.css"rel="stylesheet"> <scriptsrc="./js/jquery.js"></script> <scriptsrc="./duoji.js"></script> </head> <body> <divclass="row"style="margin:100pxauto;"> <divclass="col-md-12"id="box1"></div> </div> <divclass="row"style="margin:100pxauto;"> <divclass="col-md-12"id="box2"></div> </div> <script> //容器名,name名(新生成的class名) $.select('box1','area1'); $.select('box2','area2'); </script> </body> </html>
duoji.js代码
(function($){ $.select=function(box,addInputClass){ vari=newselect; returni.init(box,addInputClass) } //声明多级联动方法类 varselect=newFunction(); select.prototype={ //定义类属性 init:function(box,addInputClass){ this.boxName=box; this.box=$('#'+box);//需要添加元素的容器 this.eleClass=addInputClass;//每个事件的定位class this.first();//新建一个select获取 }, first:function(){ //声明外部变量 varboxName=this.boxName; vareleClass=this.eleClass; varbox=this.box; varobj=this; $.get("http://127.0.0.1:83/areas",{id:'0'}, function(data){ varoption="<optionvalue=''>请选择</option>"; varlist=data.data; for(varkeyinlist){ option+="<optionvalue='"+key+"'>"+list[key].areaname+"</option>"; } $('<divclass="col-md-2pl0"><selectname="'+eleClass+'[]"num="0"pnode="'+boxName+'"cname="'+eleClass+'"class="form-controlinput-sm'+eleClass+'">'+option+'</select></div>').appendTo(box).find('select').bind('change',function(){obj.change($(this))}); },'jsonp'); }, //change事件 change:function(event){ //声明 varboxName=$(event).attr('pnode');//获取触发事件者的pnode varclassName=$(event).attr('cname');//获取触发事件者的cname varbox=$("#"+boxName);//获取所有插入盒子的对象 vareleClass=$("."+className);//获取所有Class所在元素组 varnum=eleClass.index($(event))+1;//获取num的值 varid=$(event).val();//获取ajax发送id的头 varobj=this;//代表这个方法 //清除后续添加的新的元素 eleClass.each(function(){ //这里的this代表eleClass遍历时的单个对象 //console.log($(this).attr('num')); //console.log($().attr('num')); if($(this).attr('num')>$(event).attr('num')){ $(this).parent().remove(); } }); /* console.log(boxName); console.log(className); console.log($(event)); console.log($(event).val()); */ //循环ajax方法 $.ajax({ type:"get", dataType:"jsonp", url:"http://127.0.0.1:83/areas", data:{id:id}, sync:false,//设置为同步 success:function(data){ //console.log(data); varlist=data.data if(data.state==='1'){ varoption="<optionvalue=''>请选择</option>"; for(varkeyinlist){ option+="<optionvalue='"+key+"'>"+list[key].areaname+"</option>"; } $('<divclass="col-md-2pl0"><selectname="'+className+'[]"num="'+num+'"pnode="'+boxName+'"cname="'+className+'"class="form-controlinput-sm'+className+'">'+option+'</select></div>').appendTo(box).find('select').bind('change',function(){obj.change(this)}); } } }); }, //查询当前盒子中的信息 log:function(){ varboxName=$(event).attr('pnode');//获取触发事件者的pnode varclassName=$(event).attr('cname');//获取触发事件者的cname varbox=$("#"+boxName);//获取所有插入盒子的对象 vareleClass=$("."+className);//获取所有Class所在元素组 console.log("容器名:"+boxName+"\n触发的class名:"+className); }, //第一个select框获取信息 getFirstElement:function(){ varmain=$('#'+this.main); $.get("http://127.0.0.1:83/areas",{id:'0'}, function(data){ varoption="<optionvalue=''>请选择</option>"; varlist=data.data; for(varkeyinlist){ option+="<optionvalue='"+key+"'>"+list[key].areaname+"</option>"; } main.html(option); },'jsonp'); } } })(jQuery)
后端提供的数据类型:json
如果有数据:state=1
例子:
data:{ 110000:{id:"110000",areaname:"北京",pid:"0",shortname:"北京",level:"1",position:"tr_0",sort:"1"} 120000:{id:"120000",areaname:"天津",pid:"0",shortname:"天津",level:"1",position:"tr_0",sort:"2"} 130000:{id:"130000",areaname:"河北省",pid:"0",shortname:"河北",level:"1",position:"tr_0",sort:"3"} 140000:{id:"140000",areaname:"山西省",pid:"0",shortname:"山西",level:"1",position:"tr_0",sort:"4"} 150000:{id:"150000",areaname:"内蒙古自治区",pid:"0",shortname:"内蒙古",level:"1",position:"tr_0",sort:"5"} 210000:{id:"210000",areaname:"辽宁省",pid:"0",shortname:"辽宁",level:"1",position:"tr_0",sort:"6"} 220000:{id:"220000",areaname:"吉林省",pid:"0",shortname:"吉林",level:"1",position:"tr_0",sort:"7"} 230000:{id:"230000",areaname:"黑龙江省",pid:"0",shortname:"黑龙江",level:"1",position:"tr_0",sort:"8"} 310000:{id:"310000",areaname:"上海",pid:"0",shortname:"上海",level:"1",position:"tr_0",sort:"9"} 320000:{id:"320000",areaname:"江苏省",pid:"0",shortname:"江苏",level:"1",position:"tr_0",sort:"10"} 330000:{id:"330000",areaname:"浙江省",pid:"0",shortname:"浙江",level:"1",position:"tr_0",sort:"11"} ..... }, state:"1"
如果没有数据state=0
例子:
state:"0"