2015-12-11 61 views
-1

我在想,爲什麼這個代碼將是有效的,如果不是,有沒有更好的辦法,以確保新的事件處理程序被連接之前的事件處理程序被刪除:jQuery的,然後再打開鏈接

$('.selector') 
     .off('click', '.item') 
     .on('click', '.item', function() { 
      // code goes here 
     }) 

感謝您的幫助,瞭解這是否是確保事件處理程序在添加到選擇器之前已被移除的最佳方法。

+2

因爲你把它這是「有效的」,但..在編寫良好的代碼中幾乎不需要它。如果您需要刪除事件並添加一個不存在的新事件,則處理程序應該直接綁定到該元素,一旦該元素被刪除並替換爲新元素,該元素將自動清理;或者事件處理程序的編寫方式不需要刪除並反彈以處理新元素。 –

回答

2

您可以創建一個jQuery函數,在一次調用此兩項功能:

$.fn.onAndOff = function(event, selector, handler) { 
    this.off(event, selector) 
     .on(event, selector, handler); 
} 

然後使用它是這樣的:

$(".selector").onAndOff("click", ".item", function() { 
    // code goes here 
}); 
0

如果您的應用中存在針對特定元素創建多個相同點擊事件的風險,則這可能是一個解決方案。然而,通常情況下,您的應用程序的邏輯旨在防止這種情況發生。