修改innerHTML時保留事件監聽器
分配給DOM節點的innerHTML時,附加到後代元素的任何事件監聽器都會被銷毀。如果目的是在不影響現有事件處理的情況下附加附加內容,這可能會出現問題。
解決方案:insertAdjacentHTML
.insertAdjacentHTML() 方法提供了一個保留修改innerHTML 時的事件偵聽器。透過使用「afterend」指定插入內容的位置,可以在不影響現有 DOM 結構或其事件處理程序的情況下追加內容。
範例:
考慮以下程式碼片段:
var mydiv = document.getElementById('mydiv'); // Appending content using .innerHTML (destroys event listeners) mydiv.innerHTML += '<p>New paragraph</p>'; // Appending content using .insertAdjacentHTML (preserves event listeners) mydiv.insertAdjacentHTML('beforeend', '<p>New paragraph</p>');
在此範例中,.insertAdjacentHTML()方法成功地將新段落附加到#mydiv 元素,同時保留現有的事件偵聽器。這種方法可以應用於任何需要內容修改的 DOM 元素,而不影響其事件處理。
以上是更新 DOM 節點的 innerHTML 時如何保留事件監聽器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!