您的位置:首页 > Web前端 > JavaScript

有关js事件的绑定和解绑

2017-11-07 00:00 274 查看
摘要: js change bind unbind

事出:做了一个省市县三级联动。但是在请求三级的时候,都是请求多次;
源代码:

function initCities(pro) {
var prCode = "";
if(pro==undefined){
prCode =$("#provinces").val();
}else{
prCode = pro;
}
$('#cities').empty();
$('#areas').empty();
$('#cities').append($("<option selected='selected'  value=''>全部</option><br>"));
$.ajax({
type : "POST",
url : ctx + "code/getCitiesByProCode?prCode=" + prCode,
success : function(data) {
$.each(data.data, function(i, it) {
$("<option value='" + it.cityCode + "'>"
+ it.cityName + "</option><br>").appendTo($('#cities'));
});
$("#cities").val( $("#_cities").val());
//注意就是这里的change事件,每次请求都绑定一个change事件,多次请求后
//该事物绑定了多个change时间,因此会一次改变触发多个initAreas()方法
$('#cities').change(function(){
initAreas();
});
}
});
}

解决:解决改问题,只需要在给事物绑定事件前解绑所有的事件即可
代码:

function initCities(pro) {
var prCode = "";
if(pro==undefined){
prCode =$("#provinces").val();
}else{
prCode = pro;
}
$('#cities').empty();
$('#areas').empty();
$('#cities').append($("<option selected='selected'  value=''>全部</option><br>"));
$.ajax({
type : "POST",
url : ctx + "code/getCitiesByProCode?prCode=" + prCode,
success : function(data) {
$.each(data.data, function(i, it) {
$("<option value='" + it.cityCode + "'>"
+ it.cityName + "</option><br>").appendTo($('#cities'));
});
$("#cities").val( $("#_cities").val());
//这里的操作是在给事物绑定事件之前,先解绑该事物绑定的所有事件,然后在给事物重新绑定一
//个事件,这样就避免出现重复请求的情况发生
$('#cities').unbind().change(function(){
initAreas();
});
}
});
}

结束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js bind change