前端小白——二级联动

这种联动在网页中很常见,直接上图(本篇主要涉及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>');
        }
    }
})();

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,985评论 25 708
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,198评论 4 61
  • day9,好热啊,开着空调,听着轻音乐,娃们已经睡了,我可以肆意的享受自由时间啦。给小米今天读了童话《小兔乖乖》和...
    悦米时光阅读 185评论 0 0
  • -1- 小Y最近很在乎形象。总是捣鼓头发。 就上周,还买了一件精挑细选的polo衫,和一双鞋。 其实要说形象那,小...
    马行堂_阅读 298评论 0 2