• jquery select三级联动


    需求:
    对地区进行选择,选择相应的省,就会出现相应范围的市,然后出现相应的范围的县区;如果县不存在,就不现实,自我要求是自己写个简单的插件,方便以后调用;

    逻辑:
    1.通过div的类名来获取,其下的select标签;
    2.通过声明临时变量,用来保存option内容,并通过$.each()来遍历json然后添加到select中;
    3.如果某个市没有县,就先判断json中有没记录,如果没有就不现实,有就继续执行下面代码;
    4.用change事件来控制三个selet之间的联系;
    5.通过ajax $.getJSON,来触发省份事件,然后通过省份select的改变,来触发市区,以此类推;

    实现:

    json数据

    [
    {"p":"江西省",
    "c":[
    {"ct":"南昌市",
    "d":[
    {"dt":"西湖区"},
    {"dt":"东湖区"},
    {"dt":"高新区"}
    ]},
    {"ct":"赣州市",
    "d":[
    {"dt":"瑞金县"},
    {"dt":"南丰县"},
    {"dt":"全南县"}
    ]}
    ]},
    {"p":"北京",
    "c":[
    {"ct":"东城区"},
    {"ct":"西城区"}
    ]},
    {"p":"河北省",
    "c":[
    {"ct":"石家庄",
    "d":[
    {"dt":"长安区"},
    {"dt":"桥东区"},
    {"dt":"桥西区"}
    ]},
    {"ct":"唐山市",
    "d":[
    {"dt":"滦南县"},
    {"dt":"乐亭县"},
    {"dt":"迁西县"}
    ]}
    ]}
    ]
    

    html代码

    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>select</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <script type="text/javascript" src="jquery.js"></script>
    <script src = "areaSelect.js"></script>
    <link href="" rel="stylesheet">
    <style>
    	.sel{
    		300px;
    		margin:0 auto;
    	}
    </style>
    </head>
    <body>
        <div class="sel">
        	<select class="province">
        		<option>请选择</option>
        	</select>
        	<select class="city">
        		<option>请选择</option>
        	</select>
        	<select class="district">
        		<option>请选择</option>
        	</select>    	    	
        </div>
    </body>
    </html>
    <script>
    	$(document).ready(function(){
    		$(".sel").areaSelect({
    			"jsonUrl":"area.json"
    		})
    	})
    </script>
    

    jquery插件

    /**
     * 
     * @authors Your Name (you@example.org)
     * @date    2015-09-13 01:54:25
     * @version $Id$
     */
    (function($){
    	$.fn.areaSelect = function(options){
    		var settings = $.extend({
    			"jsonUrl":"json"
    		},options);
    
            return this.each(function(){
            	var url = options.jsonUrl;
    			var addJson;
    			var tHtml = "";
    			var op = $(this).find(".province");
    			var oc = $(this).find(".city");
    			var od = $(this).find(".district");
    			//初始化
    			var province = function(){
    	            $.each(addJson,function(i,province){
    	            	tHtml += "<option value = '"+province.p+"'>"+province.p+"</option>";
    	            });
    	            op.html(tHtml);
    	            city();
    
    			}
    			var city = function(){
    				var tHtml="";
    				var n = op.get(0).selectedIndex;
    				$.each(addJson[n].c,function(i,city){
    	                tHtml += "<option value='"+city.ct+"''>"+city.ct+"</option>";
    				});
    				oc.html(tHtml);
    				district();
    			}
    			var district = function(){
    				var tHtml="";
    				var n = op.get(0).selectedIndex;
    	            var m = oc.get(0).selectedIndex;
    	            if(typeof (addJson[n].c[m].d) == "undefined"){
    	            	od.css("display","none")
    	            }else{
    	            	od.css("display","inline");
    		            $.each(addJson[n].c[m].d,function(i,district){
    		            	tHtml += "<option value='"+district.dt+"'>"+district.dt+"</option>"
    		            });
    		            od.html(tHtml);
    		        }    
    
    		    }
    
    			op.change(function(){
    				city();
    			})
    			oc.change(function(){
    				district()
    			});
    			$.getJSON(settings.jsonUrl,function(data){
    				addJson  = data;
    				province()
    			})
    
            })
    	}
    })(jQuery)
    

    转载自:http://www.cnblogs.com/afuge/archive/2013/06/08/3127172.html  有修改!

  • 相关阅读:
    使用 shell 脚本自动获取发版指标数据
    使用etcd选举sdk实践master/slave故障转移
    从零开始学Spark(一)
    Struts2被曝远程代码执行漏洞;叮咚买菜抢菜工具;find替代方案…|叨资讯
    从零开始学Spark(二)了解Spark
    7Zip 安全漏洞;FASTJSON 2.0 发布;程序员延寿指南…|叨资讯
    nodejs的TCP相关的一些笔记
    nodejs的tream(流)解析与模拟文件读写流源码实现
    nodejs的HTTP相关的一些笔记(代理服务、静态服务器工具)
    搭建Aira2实现个人离线下载
  • 原文地址:https://www.cnblogs.com/bestsamcn/p/4804864.html
Copyright © 2020-2023  润新知