zoukankan      html  css  js  c++  java
  • 写了一个联动select的jquery选择器

    比如省市,或者是别的有层次关系的都可以用,先引进jquery,再定义数据,格式是json数据,parDepId是指父id

    <script type="text/javascript" src="/assets/js/jquery-1.8.1.min.js"></script>
    <script language="javascript">
     	var jsonList = new Array();
     	 		var jo = {"id":"11","name":" 皮肤神经外科","parDepId":"5"};
    		jsonList.push(jo);
    	 		var jo = {"id":"10","name":"骨神经外科","parDepId":"5"};
    		jsonList.push(jo);
    	 		var jo = {"id":"8","name":"小儿不呼吸内科","parDepId":"9"};
    		jsonList.push(jo);
    	 		var jo = {"id":"7","name":"小儿bu消化内科","parDepId":"3"};
    		jsonList.push(jo);
    	 		var jo = {"id":"6","name":"小儿消化内科","parDepId":"2"};
    		jsonList.push(jo);
    	 		var jo = {"id":"9","name":"呼吸内科","parDepId":"1"};
    		jsonList.push(jo);
    	 		var jo = {"id":"4","name":"外科","parDepId":"0"};
    		jsonList.push(jo);
    	 		var jo = {"id":"5","name":"神经外科","parDepId":"4"};
    		jsonList.push(jo);
    	 		var jo = {"id":"3","name":"bu消化内科","parDepId":"1"};
    		jsonList.push(jo);
    	 		var jo = {"id":"2","name":"消化内科","parDepId":"1"};
    		jsonList.push(jo);
    	 		var jo = {"id":"1","name":"内科","parDepId":"0"};
    		jsonList.push(jo);
    	 	for(var i=0;i<jsonList.length;i++){
     		//alert(jsonList[i].id+','+jsonList[i].name+','+jsonList[i].parDepId);
     		if(jsonList[i].parDepId=='0'){
     			$("#s1").append("<option value="+jsonList[i].id+">"+jsonList[i].name+"</option>");
     		}
     	}
     </script>
    

     接着定义html元素,由于是放在bui中的格式,所以这里的class除了select是无具体意义用于选择的外,其他都是具体的样式。不过和本次记录关机不大

    <div class="row">
                <div class="control-group span16">
                    <label class="control-label"><s>*</s>科室</label>
                    <div class="controls">
                        <input name="keshi" id="keshi" type="hidden" value="" class="input-normal control-text">
                    </div>
                    <span id="dyna">
                        <select id="s1" class="dyclass" >
                            <option value="">请选择</option>
                        </select>
                    </span>
                </div>
            </div>

    然后定义一个函数处理联动变化

     <script language="javascript">
         $(function(){
             $("#dyna .dyclass").live("change",function(){
             var cur = $(this).find("option:selected").val();
             var curid = $(this).attr("id");
             var curno = curid.substring(curid.length-1,curid.lenth);
             //alert($(this).attr("id")+','+curno);
             var ttt = $('#'+curid+' ~ .dyclass');
             ttt.remove();
             var er = new Array();
             for(var i=0;i<jsonList.length;i++){
                 //alert(jsonList[i].id+','+jsonList[i].name+','+jsonList[i].parDepId);
                 if(jsonList[i].parDepId==cur){
                     er.push("<option value="+jsonList[i].id+">"+jsonList[i].name+"</option>");
                 }
             }
             var nextid = curno*1+1;
             if(er.length>0){
                 $('#dyna').append("<select id=s"+nextid+" class=dyclass"+"></select>");
                 $('#s'+nextid).append("<option value=''>请选择</option>");
             }
             for(var i=0;i<er.length;i++){
                 $('#s'+nextid).append(er[i]);
             }
             });
             
             $("#checkme").click(function(){
                 //var result = ;
                 alert($('#dyna select:last').find("option:selected").val());
             })
         })
         
     </script>

    后面的checkme是用来最后取值的,效果就是构建了一棵树之后只能选择叶子节点,选择到了叶子节点后面的select元素就没了,如果还不是叶子节点,后面就会动态生成一个请选择的select元素。注意的地方就是live和计算的时候*1+1,因为+号被javaScript解释成了连接符号了。
    精简一下的话,一个较短的函数就解决了这个问题,还是比较满意的。

  • 相关阅读:
    HDU1720 A+B Coming
    HDU1390 ZOJ1383 Binary Numbers
    HDU1390 ZOJ1383 Binary Numbers
    HDU2504 又见GCD
    HDU2504 又见GCD
    HDU1335 POJ1546 UVA389 UVALive5306 ZOJ1334 Basically Speaking
    HDU1335 POJ1546 UVA389 UVALive5306 ZOJ1334 Basically Speaking
    HDU1020 ZOJ2478 Encoding
    HDU1020 ZOJ2478 Encoding
    HDU2097 Sky数
  • 原文地址:https://www.cnblogs.com/azul0906/p/4245340.html
Copyright © 2011-2022 走看看