今天遇到了又一個神奇的問題,起因是做一個開啟禁用功能的按鈕,先給按鈕定義事件。
$('.pro_on').click(project.proTurnOff);
$('.pro_off').click(project.proTurnOn);
在這開啟事件函數(shù)中這樣寫,禁用事件同理。
//開啟按鈕事件
Project.prototype.proTurnOn = function(){
pro_id = $(this).attr('id');
var This = $(this);
$.ajax({
url:'/project_user/'+pro_id+'/edit',
type:'get',
data:{
disable:0
},
beforeSend:function(){
$('.loading').show();
},
success:function(data){
if(data.status==200){
This.html('禁用');
This.removeClass('pro_off').addClass('pro_on');
alert('修改為開啟');
$('.pro_on').click(project.proTurnOff);
$('.pro_off').click(project.proTurnOn);
}
}
})
};
這里需要注意,修改class之后,前面定義的事件失效了,需要重新定義才生效。但是這個時候,神奇的事情發(fā)生了,點擊前幾次的時候,開啟禁用功能都正常,但是當(dāng)從第四次點擊開始,每點擊一次,就相當(dāng)于點擊了n+1次,時間觸發(fā)的次數(shù)越來越多,后經(jīng)大師(兄弟會--王飛龍)指點,需要在重新定義點擊時間之前,先取消之前的事件綁定。因此,修改如下
$('.pro_on').click(project.proTurnOff);
$('.pro_off').click(project.proTurnOn);
修改為:
$('.pro_on').off("click").click(project.proTurnOff);
$('.pro_off').off("click").click(project.proTurnOn);
像往常一下,不知道為什么,但是,解決了。