jquery实现省市区三级联动

jquery实现省市区三级联动

     最近项目需要用到关于省市区三级联动下拉选择的功能,于是乎网上搜了一些做法,觉得有一些只是给出了小的案例,却很难找到详细的省、市、区的具体数据(其实,用baidu搜索就是这样啦。。。),果断用google,搜出来的博文质量相当高,特此记录记录!!!

     对于这个效果,其实我发现主要在于两点:1、jquery的筛选遍历操作;2、存储省、市、区这些数据时候的格式。另外一点是如何将获取得到的数据放到select option中(即下拉框中!)

     对于第一个问题的解决,其实熟悉Jquery的博友估计是不难的,主要涉及:find,eq,attr等函数的操作。下面是其中涉及到的一个案例:用于获取省的所有数据,并将其放到下拉框中:

function func_suc_getXmlProvice(xml) {
		//jquery的查找功能
		var sheng = $(xml).find("prov");
		
		//jquery的遍历与查询匹配 eq功能,并将其放到下拉框中
		sheng.each(function(i) {
			province.append("");
		});
	}

     下面进入正题,建立一个动态web工程,然后将下面讲到的html、js文件、存放省市区xml文件 都放在Web-Contetn下即可。首先看一看前端html文件province_city_select.html:





省市区三级联动

  


	
	
	
	
地址是:    

     然后注意放进jquery-1.8.3.min.js,可以来我这里下来: jquery库文件。然后需要新建province_city.js,其源码如下:

$(function() {
	
	var address = $("#pro_city");
	var province = $("#province");
	var city = $("#city");
	var area = $("#area");
	var preProvince = "";
	var preCity = "";
	var preArea = "";
	
	//初始化
	province.html(preProvince);
	city.html(preCity);
	area.html(preArea);
	
	//文档加载完毕:即从province_city_select_Info.xml获取数据,成功之后采用
	//func_suc_getXmlProvice进行 省的 解析
	$.ajax({
		type : "GET",
		url : "province_city_select_Info.xml",
		success : func_suc_getXmlProvice
	});
	
	//省 下拉选择发生变化触发的事件
	province.change(function() {
		//province.val()  : 返回是每个省对应的下标,序号从0开始
		if (province.val() != "") {
			city.html(preCity);
			
			//根据下拉得到的省对于的下标序号,动态从从province_city_select_Info.xml获取数据,成功之后采用
			//func_suc_getXmlProvice进行省对应的市的解析
			$.ajax({
				type : "GET",
				url : "province_city_select_Info.xml",
				success : func_suc_getXmlCity
			});
			
		}
	});
	
	//市 下拉选择发生变化触发的事件
	city.change(function() {
		area.html(preArea);
		$.ajax({
			type : "GET",
			url : "province_city_select_Info.xml",
			
			//根据下拉得到的省、市对于的下标序号,动态从从province_city_select_Info.xml获取数据,成功之后采用
			//func_suc_getXmlArea进行省对应的市对于的区的解析
			success : func_suc_getXmlArea
		});
	});
	
	//区 下拉选择发生变化触发的事件
	area.change(function() {
		var value = province.find("option:selected").text()
				+ city.find("option:selected").text()
				+ area.find("option:selected").text();
		address.text(value);
		$("#txtProCity").val(value);
	});
	
	//解析获取xml格式文件中的prov标签,得到所有的省,并逐个进行遍历 放进下拉框中
	function func_suc_getXmlProvice(xml) {
		//jquery的查找功能
		var sheng = $(xml).find("prov");
		
		//jquery的遍历与查询匹配 eq功能,并将其放到下拉框中
		sheng.each(function(i) {
			province.append("");
		});
	}
	
	function func_suc_getXmlCity(xml) {
		var xml_sheng = $(xml).find("prov");
		var pro_num = parseInt(province.val());
		var xml_shi = xml_sheng.eq(pro_num).find("city");
		xml_shi.each(function(j) {
			city.append("");
		});
	}
	
	function func_suc_getXmlArea(xml) {
		var xml_sheng = $(xml).find("prov");
		var pro_num = parseInt(province.val());
		var xml_shi = xml_sheng.eq(pro_num).find("city");
		var city_num = parseInt(city.val());
		var xml_xianqu = xml_shi.eq(city_num).find("county");
		xml_xianqu.each(function(k) {
			area.append("");
		});
	}
});

     然后,重点来了,当然是province_city_select_Info.xml里面的内容啦,因为比较多,我只贴出一部分,如下所示,其余的可以到我这里来下载: 省市区三级数据


		
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
		
		
			
			
			
			
			
			
			
			
			
			
			
			
			
			
		
		
			
			
			
			
			
			
			
		
		
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
		
		
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
		
		
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
		
		
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
		
		
			
			
			
			
			
			
			
			
			
			
			
		
		
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
		
		
			
			
			
			
			
			
			
			
			
			
		
		
			
			
			
			
			
			
			
			
			
			
			
		
	

     好了,介绍一下效果:

     刚开始的:

jquery实现省市区三级联动_第1张图片



     下拉选择省的,然后出现市的,选择了市的,然后出现了区的,最后选择区的时候,得到地址:

jquery实现省市区三级联动_第2张图片



jquery实现省市区三级联动_第3张图片

jquery实现省市区三级联动_第4张图片

     好了,就介绍到这里吧!!

你可能感兴趣的:(jquery实战)