前端微说集Web前端之路让前端飞

前端小白——二级联动

2017-04-24  本文已影响91人  雾里看花最是迷人

这种联动在网页中很常见,直接上图(本篇主要涉及jQuery)


二级联动.gif

页面的布局很简单,就是采用一个简单的table来实现,table部分如下

<table>
            <tr>
                <td>省  份</td>
                <td>
                    <select id="province">
                        <option>--请选择目标地址的省份</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>城  市</td>
                <td>
                    <select name="" id="city" class="city">
                        <option>--请选择目标地址的城市</option>
                    </select>
                </td>
            </tr>
        </table>

这里我采用的是数组的形式实现联动,内容是通过代码动态添加的。一个数组用于存储4个省,然后每一个省份对应的城市又采用数组,当选择省份后,根据省份名来选择对应的城市数组,再将城市添加到第二个下拉框。

/**
 * author:hkk;
 */

(function() {
    $province = $("#province"); //获取到省份下拉框的jquery对象
    $city = $("#city");   //获取到城市下拉框的jquery对象
    var provinces = ["北京","上海","江苏","浙江"];
    var beijing = ["东城区","西城区","宣武区"];
    var shanghai = ["徐汇区","普陀区"];
    var jiangsu = ["南京","苏州","无锡"];
    var zhejiang = ["杭州","宁波"];
    for (i in provinces) {
        //循环添加option到select节点中去
        $province.append('<option>'+provinces[i]+'</option>');
    }
    //为省份下拉框绑定监听事件,当它的内容改变时触发
    $province.on('change', function(e) {
        var name = $province.val();  //获取到当前选择的省份名称
        switch (name) {
            case '北京':addCity(beijing);break;
            case '上海':addCity(shanghai);break;
            case '江苏':addCity(jiangsu);break;
            case '浙江':addCity(zhejiang);break;
            default :
            //如果没有选择省份,城市下拉框应该是不显示任何城市的,所以清空之前的城市,同时添加提示信息
            $city.html("");
            $city.append('<option selected="selected">--请选择目标地址的城市</option>');break;
        }
    });

    function addCity(cities) {
        $city.html("");  //当选择省份后,去掉城市下拉框中的提示信息
        $city.append('<option selected="selected">'+cities[0]+'</option>');  //把城市数组中的第一个城市作为默认值
        var i = 1;  //所以这个地方应该是从1开始
        for (i in cities) {
            $city.append('<option>'+cities[i]+'</option>');
        }
    }
})();

哈哈,很简单的样子,上面的代码是不是浅显易懂,应该有更好的方法,这里只是自己的一种思路。还是那句话,如果有错误,还望各位大侠指正,如果有比我还小白,看不明白的地方,直接提出来就好。

上一篇 下一篇

猜你喜欢

热点阅读