我有一個定義事件偵聽器的類方法。讓我們使用下面的代碼片段來簡化。重新綁定JavaScript事件和addEventListener觸發兩次
function bindEvents() {
document.querySelector('button').addEventListener('click', (e) => {
console.log('clicked!');
});
}
// Initial event binding
bindEvents();
// Rebind events at some point for dynamically created elements
bindEvents();
<button type="button">Click</button>
一切正常使用bindEvents()
時只有一次罰款,但例如在執行兩次在聽衆Ajax回調結果再次調用它。所以這意味着在第二個bindEvents()
之後,單擊該按鈕將會兩次console.log()
等等。有沒有辦法解決這個問題?
我知道我可以在文檔的「動態」結合的活動,並與e.target
檢查,但我需要的mouseenter /鼠標離開事件的情況下,我不認爲這是一個好主意,總是有那些事件監聽器該文件。
我讀的地方下面,看來還是假的......
的閱讀進度的方法確保相同的函數引用 不會超過一次相同的元素/事件綁定/捕獲 組合。
我也玩過options
參數從這裏https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener,但沒有成功。
對不起,如果這是回答某處,但我沒有找到SO和搜索引擎的答案。
UPDATE:有沒有辦法覆蓋現有的事件監聽器或舊的應該removeEventListener
像KCP以下建議被刪除?這個問題有沒有更優雅的解決方案?
謝謝你的建議。這肯定會起作用,你認爲這個問題可能有更清晰的解決方案嗎? –