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{
		width: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 ([email protected])
 * @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  有修改!

时间: 2024-10-12 20:19:14

jquery select三级联动的相关文章

简单jquery实现select三级联动

简单的jquery实现select三级联动 代码如下: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <title>selectList</title> 6 <style type="text/css"> 7 *{margin:0;padding:0;} 8 .selectList{width:200

jQuery实现select三级联动

参考:jQuery权威指南jQuery初步jQuery选择器jQuery操作domjQuery操作dom事件jQuery插件jQuery操作AjaxjQuery动画与特效jQuery实现导航栏jQuery实现点击式选项卡jQuery实现select三级联动 效果 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 4

angularjs select 三级联动

<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>angularjs select 三级联动</title> <script type="text/javascript" src="http://cdn.angularjs.cn/angularjs/1.3.0-beta.17/angular.js"&

jquery 城市三级联动

js代码 /*城市三级联动 * @method cityChange * @param allProvince,allCity,allDistrict */ function cityChange(provinceN,cityN,districtN){ var all_province=""; for(var i=0;i<allCity.province.length;i++){ all_province+='<option name="province"

jquery省市区三级联动(数据来源国家统计局官网)内附源码下载

很久很久没有写博了. 今天更新了项目的省市区三级联动数据,更新后最新的海南三沙都有,分享给所有需要的小伙伴们... JQUERY + JSON,无数据库,纯JS代码,无加密,无压缩,可直接使用在任何项目中. 数据来源于国家统计局官网. 先上图: 绑定省市区 使用方法: 1. 引用JQUERY    <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.11.1/jquery.min

jQuery实现三级联动

//很久没写了,顺带复习,写了一个jQuery实现的三级联动<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <meta charset="utf-8" /> <script sr

jquery+ligerform三级联动下拉框

如下为ligerform里的三级联动下拉框: var formData=[ {display:"县区",name:"QY",newline:true,labelWidth:100,width:220,space:50,type:"select",group:"区域信息",groupicon:"@Url.Content("~/Content/icons/32X32/communication.gif"

jquery+html三级联动下拉框及详情页面加载时的select初始化问题

html写的三个下拉框,如下: <select name="ddlQYWZYJ" id="ddl_QYWZYJ" class="fieldsel" style="width: 200px;font-size:12px" ></select> <select name="ddlQYWZEJ" id="ddl_QYWZEJ" class="fields

jquery版三级联动select

<!DOCTYPE html> <html> <head> <meta charset=gbk /> <title>selectList</title> <style type="text/css"> *{margin:0;padding:0;} .selectList{width:200px;margin:50px auto;} </style> <script type="