簡體   English   中英

確保jQuery委托處理程序僅附加一次

[英]Make sure jQuery delegate handler is only attached once

我有一個將jQuery委托處理程序附加到元素的click事件上的函數:

function foo() {
      $(document).delegate("#fooElement", "click, function(event) {

      });
}

在頁面的整個生命周期中,可能多次調用foo函數,並且有時可能會刪除處理程序。 確保一次最多附加一次此處理程序實例的最佳方法是什么? 我應該執行以下操作來刪除處理程序,然后重新附加它:

function foo() {
      $(document).undelegate().delegate("#fooElement", "click, function(event) {

      });
}

還是我需要跟蹤一個布爾isHandlerAttached 理想情況下,將有一種更簡潔的方法來執行此操作,但是我在jQuery文檔中沒有找到任何方法。

文檔是每個人都在添加事件的通用元素,因此我建議使用名稱分隔事件名稱。 此外,不建議使用委托和取消委托,而應使用on / off

$(document).off('click.foo', '#fooElement').on('click.foo', '#fooElement', function(e) {
    // put your logic in here
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM