前端小白——二级联动
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>');
}
}
})();
哈哈,很简单的样子,上面的代码是不是浅显易懂,应该有更好的方法,这里只是自己的一种思路。还是那句话,如果有错误,还望各位大侠指正,如果有比我还小白,看不明白的地方,直接提出来就好。