2017-07-17 151 views

回答

3

這增加了一個新的click事件處理程序:?

$('#link').on('click', function(){}); 

這消除附着與.on()(如果有的話),然後將所有現有click事件處理程序增加了一個新的click事件處理程序:

$('#link').off('click').on('click', function(){}); 
+0

你的答案簡單易懂。但是''.off''行爲可以通過'event.preventdefault()'來實現。 ? – weBBer

+0

呃,不是。你想在哪裏放置'event.preventdefault()'? –

+0

如果在我當前的'click'中有其他'click'事件處理程序 - 我可以通過'event.preventdefault()'來防止它。什麼是不同的。? – weBBer

2

從jQuery文檔,

的。 off()方法刪除使用 .on()附加的事件處理程序。有關更多信息,請參閱關於 該頁的委派和直接綁定事件的討論。調用沒有參數的.off() 會刪除所有連接到元素的處理程序。通過提供事件名稱,名稱空間,選擇器或處理函數名稱的組合,可以在元素上刪除特定事件處理程序 。當給出多個 過濾參數時,所提供的所有參數必須與要移除的事件處理程序匹配 。

在你的問題,

$('#link').off('click').on('click',function(){}); 

它只是去除附着在事件的任何一個事件處理程序,並創建一個新的。

1

我們使用$('#link').on('click',function(){});當我們知道沒有其他點擊功能已經綁定到這個元素,或者即使另一個點擊功能是一個綁定,那麼這並不妨礙我們的點擊功能。我們使用.off從這個元素的所有地方解除(停止)點擊功能,然後使用.on點擊來僅綁定我們的點擊功能。