2010-08-27 124 views
2

我有一些代碼jQuery的,看起來像這樣:刪除事件

$("#filterZaal").attr("disabled", "disabled"); 
$("#filterGenre").attr("disabled", "disabled"); 
$("#filterZaal").live("change", interceptZaalFilter); 
$("#filterDag").live("change", interceptDagFilter); 
$("#filterGenre").live("change", interceptGenreFilter); 

現在,我已經添加了一個按鈕,當我按下這個按鈕,我想,所有上面的代碼不計數了,所以當我按下按鈕時,這些事件將不再被調用,但當我再次推動它時,它應該再次啓用。

我如何在jQuery中做到這一點?

回答

4

而不是添加/刪除的事件每次用die(),我剛剛創建切換標誌:

var Toggle = false; 

$("#filterZaal").live("change", function(){ 
    if(Toggle){ interceptZaalFilter(); } // alterantively, add this check 
    Toggle = !Toggle;      // to the func you call 
}); 
// and so on 

這似乎更好地捕捉你想要的東西,幾乎肯定會更有效率。

+0

我正要離開了相同的答案。這將比不斷添加/刪除處理程序更有效率。 +1 – user113716 2010-08-27 20:51:13

0

你要使用die()

$("#filterZaal").die("change", interceptZaalFilter); 
$("#filterDag").die("change", interceptDagFilter); 
$("#filterGenre").die("change", interceptGenreFilter); 
2

有事件處理程序檢查是否$('#theButton').hasClass('disabled'),如果是的話,他們做$('#theButton').removeClass('disabled')並返回false;否則通常

繼續那麼當你添加按鈕,確保它有一個「殘疾人」類

+0

這也是一個好方法+1 – 2010-08-27 20:50:46