简单易懂的jquery版三级联动select

html和js部分

<!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="text/javascript" src="jquery1.7.1.js"></script>

</head>

<body>

    <div class="selectList">

        <select class="province">

            <option>请选择</option>

        </select>

        <select class="city">

            <option>请选择</option>

        </select>

        <select class="district">

            <option>请选择</option>

        </select>

    </div>

    <div class="selectList">

        <select class="province">

            <option>请选择</option>

        </select>

        <select class="city">

            <option>请选择</option>

        </select>

        <select class="district">

            <option>请选择</option>

        </select>

    </div>

    <script type="text/javascript">

    $(function(){

        $(".selectList").each(function(){

            var url = "area.json";

            var areaJson;

            var temp_html;

            var oProvince = $(this).find(".province");

            var oCity = $(this).find(".city");

            var oDistrict = $(this).find(".district");

            //初始化省

            var province = function(){

                $.each(areaJson,function(i,province){

                    temp_html+="<option value='"+province.p+"'>"+province.p+"</option>";

                });

                oProvince.html(temp_html);

                city();

            };

            //赋值市

            var city = function(){

                temp_html = ""; 

                var n = oProvince.get(0).selectedIndex;

                $.each(areaJson[n].c,function(i,city){

                    temp_html+="<option value='"+city.ct+"'>"+city.ct+"</option>";

                });

                oCity.html(temp_html);

                district();

            };

            //赋值县

            var district = function(){

                temp_html = ""; 

                var m = oProvince.get(0).selectedIndex;

                var n = oCity.get(0).selectedIndex;

                if(typeof(areaJson[m].c[n].d) == "undefined"){

                    oDistrict.css("display","none");

                }else{

                    oDistrict.css("display","inline");

                    $.each(areaJson[m].c[n].d,function(i,district){

                        temp_html+="<option value='"+district.dt+"'>"+district.dt+"</option>";

                    });

                    oDistrict.html(temp_html);

                };

            };

            //选择省改变市

            oProvince.change(function(){

                city();

            });

            //选择市改变县

            oCity.change(function(){

                district();

            });

            //获取json数据

            $.getJSON(url,function(data){

                areaJson = data;

                province();

            });

        });

    });

    </script>

</body>

</html>

json文件(area.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":"迁西县"}

        ]}

    ]}

]

各位最好自己封装成插件,方便调用

你可能感兴趣的:(jquery)