1. 程式人生 > >基於JQuery+Json資料格式的省市區三級聯動

基於JQuery+Json資料格式的省市區三級聯動

本文章適用於新手,老手自便

先看原始碼:

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<meta charset="utf-8">
	<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script><!--jq包-->
	<script type="text/javascript" src="js/cityjson.js"></script><!--資料來源檔案-->
	<script type="text/javascript">
	$(document).ready(function(){
	
		//操作DOM,載入資料到下拉列表 foreach
		$.each(data,function(index,item){ //迴圈data資料中每一個 
			$("#province").append("<option value="+index+">"+item.name+"</option>");
			
		});
		
		//點選不同的省,載入市
		$("#province").bind("change",function(){
			//得到哪個省被點選
			
			var province = $(this).val();//得到當前省份
			var city = data[province].child;//得到當前省份的所有城市
			//載入該省的資料
		
		    $("#city").empty();//重新選擇省時候清空城市列表
		    $("#area").empty();//重新選擇省時候清空區列表
		    $("#city").append("<option>請選擇</option>");
			$.each(city,function(index2,item){
			
			$("#city").append("<option value="+index2+">"+item.name+"</option>");
			
			});
			
		});

 	$("#city").bind("change",function(){
 		
 		  $("#area").empty();//重新選擇城市時候清空區列表
		   $("#area").append("<option>請選擇</option>");
				
 			var province = $("#province").val(); //得到當前省
 			var citynum = $(this).val();//得到當前城市
 			var are = data[province].child[citynum].child; //得到當前城市所對應的城區
 			
 			
			$.each(are,function(index3,item){
		$("#area").append("<option value="+index3+">"+item+"</option>");
				
			});
			
 	});

	});
	</script>
</head>
<body>
	省:<select id="province"><option>請選擇</option></select>
	市:<select id="city"></select>
	區:<select id="area"></select>
</body>
</html>       

這裡是瀏覽器的效果圖:
在這裡插入圖片描述

再來看一下資料的程式碼片段:

var data = 
{
    "110000": {
        "name": "北京市",
        "child": {
            "110100": {
                "name": "市轄區",
                "child": {
                    "110101": "東城區",
                    "110102": "西城區",
                    "110105": "朝陽區",
                    "110106": "豐臺區",
                    "110107": "石景山區",
                    "110108": "海淀區",
                    "110109": "門頭溝區",
                    "110111": "房山區",
                    "110112": "通州區",
                    "110113": "順義區",
                    "110114": "昌平區",
                    "110115": "大興區",
                    "110116": "懷柔區",
                    "110117": "平谷區",
                    "110118": "密雲區",
                    "110119": "延慶區"
                }
            }
        }
    },
    "120000": {
        "name": "天津市",
        "child": {
            "120100": {
                "name": "市轄區",
                "child": {
                    "120101": "和平區",
                    "120102": "河東區",
                    "120103": "河西區",
                    "120104": "南開區",
                    "120105": "河北區",
                    "120106": "紅橋區",
                    "120110": "東麗區",
                    "120111": "西青區",
                    "120112": "津南區",
                    "120113": "北辰區",
                    "120114": "武清區",
                    "120115": "寶坻區",
                    "120116": "濱海新區",
                    "120117": "寧河區",
                    "120118": "靜海區",
                    "120119": "薊州區"
                }
            }
        }
    },

因為資料是基於全國的省市區,這裡沒有全部展示,只展示部分片段

這裡是瀏覽器控制檯的效果圖,方便查詢結點
在這裡插入圖片描述