1. 程式人生 > >三十九、Jquery三級聯動dome

三十九、Jquery三級聯動dome

說明:和js的三級聯動dome寫法一致,只是用jquery語法;

另外資料這次採用json資料格式做示範;

 

注意:json資料中同級關係的名稱一致,方便後面的訪問,子父級關係的名稱可以一致也可以不一致

另外,還需要處理選擇請選擇時的bug(設定預設value=””,當獲取的value值為空時,跳出當前程式)

 

程式碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
省:
<select id="provice">
    <option value="">--請選擇--</option>
</select>
市:
<select id="city">
    <option value="">--請選擇--</option>
</select>
區:
<select id="qu">
    <option value="">--請選擇--</option>
</select>

<script src="js/jquery-3.0.0.js"></script>
<script>
    //構建資料
    var city=[
        {
            "provicename":"陝西省",
            "proviceChild":[
                {
                    "cityname":"西安市",
                    "cityChild":[
                        {"quname":"蓮湖區"},
                        {"quname":"長安區"},
                        {"quname":"未央區"},
                        {"quname":"高新區"},
                        {"quname":"雁塔區"}
                    ]
                },
                {
                    "cityname":"寶雞市",
                    "cityChild":[
                        {"quname":"金臺區"},
                        {"quname":"成倉區"},
                        {"quname":"高新區"},
                        {"quname":"渭濱區"}
                    ]
                },
                {
                    "cityname":"咸陽市",
                    "cityChild":[
                        {"quname":"咸陽市1"},
                        {"quname":"咸陽市2"},
                        {"quname":"咸陽市3"},
                        {"quname":"咸陽市4"}
                    ]
                },
                {
                    "cityname":"延安市",
                    "cityChild":[
                        {"quname":"延安市1"},
                        {"quname":"延安市2"},
                        {"quname":"延安市3"},
                        {"quname":"延安市4"}
                    ]
                },
                {
                    "cityname":"漢中市",
                    "cityChild":[
                        {"quname":"漢中市1"},
                        {"quname":"漢中市2"},
                        {"quname":"漢中市3"},
                        {"quname":"漢中市4"}
                    ]
                }
            ]
        },
        {
            "provicename":"四川省",
            "proviceChild":[]
        }
    ];

    //省級
    for(var i=0;i<city.length;i++){
        var option=$("<option></option>");
        option.val(i);
        option.html(city[i].provicename);
        $("#provice").append(option);
    }

    //市級 利用省級文字改變事件
    var cityindex=0;//用來標記市
    $("#provice").change(function(){
        //每次改變 清除市、區內容
        $("#city option:gt(0)").remove();
        $("#qu option:gt(0)").remove();

        var index=$(this).val();
        //這裡得處理點選請選擇的bug
        if(index=="")return;

        cityindex=city[index].proviceChild;

        for(var i=0;i<city[index].proviceChild.length;i++){
            var option=$("<option></option>");
            option.val(i);
            option.html(city[index].proviceChild[i].cityname);
            $("#city").append(option);
        }
    });

    //區級 利用市級文字改變事件
    $("#city").change(function(){
        //每次改變 移除區內容
        $("#qu option:gt(0)").remove();

        var index=$(this).val();
        if(index=="")return;

        for(var i=0;i<cityindex[index].cityChild.length;i++){
            var option=$("<option></option>");
            option.val(i);
            option.html(cityindex[index].cityChild[i].quname);
            $("#qu").append(option);
        }
    });
</script>
</body>
</html>