2008-09-23 369 views
7

我想附加一個單擊事件到一個按鈕元素,然後刪除它,但我不能讓unclick()或unbind()事件按預期工作。在下面的代碼中,該按鈕是'棕褐色',點擊事件起作用。事件處理jQuery unclick()和unbind()事件?

window.onload = init; 
function init() { 
    $("#startButton").css('background-color', 'beige').click(process_click); 
    $("#startButton").css('background-color', 'tan').unclick(); 
} 

如何從我的元素中刪除事件?

回答

18

有沒有這樣的事情unclick()。你從哪裏得到那個的?

你可以通過調用解除綁定從一個元素中刪除個別事件處理程序:

$("#startButton").unbind("click", process_click); 

如果要刪除所有處理程序,或者你使用匿名函數作爲處理程序,可以省略第二個參數unbind()

$("#startButton").unbind("click"); 
+0

http://www.visualjquery.com/1.0.4.html unclick(fn) 從每個匹配元素中移除綁定的單擊事件。您必須傳遞原始綁定方法中使用的相同函數。 – 2008-09-24 14:49:54

3

解除綁定是你的朋友。

$("#startButton").unbind('click') 
0

您確定要解除綁定嗎?如果以後你想要再次綁定它,又是一次又一次?我不喜歡動態事件處理綁定/解除綁定,因爲當你從代碼的不同位置調用它們時,它們往往會失去控制。

你可能要考慮替代方案:

  • 更改按鈕「已禁用」屬性
  • 實行內部「process_click」你的邏輯功能

只是我的2美分,而不是一個通用解。

6

或者你可以有一個情況下,你要取消綁定點擊功能你使用它之後,就像我只好:

$('#selector').click(function(event){ 
    alert(1); 
    $(this).unbind(event); 
});