[英]Attach scroll event handler to an dynamically created element
我正在使用simplescroll bar (SSB),它在頁面加載時為我的滾動內容添加了包裝器。 我需要附加一個事件偵聽器,它可以在滾動上工作。
沒有 SSB 一個簡單的
document.querySelector(".element").parentNode.addEventListener('scroll', handler);
沒有工作。 但是現在它不起作用,因為正確的.parentNode
還不存在,它稍后會由 SSB 在后台添加(我不知道什么時候,我不知道如何,我無法控制它)。
如何將滾動處理程序附加到動態創建的(不是由我創建的)元素?
通過單擊事件,我確實使用了這樣的函數
function addPostponedEventListener(selector, eventName, handler)
{
document.addEventListener(
eventName,
e =>
{
const el = e.target;
if (el.closest(selector))
{
handler();
}
}
)
}
addPostponedEventListener('.element', 'scroll', handler);
但它僅適用於冒泡,並且對於滾動事件似乎禁用了冒泡,因此它不起作用。
多虧了這個答案,我才能做到:
function addPostponedEventListener(selector, eventName, handler)
{
let interval = setInterval(() =>
{
let el = document.querySelector(selector);
if (el)
{
el.addEventListener(eventName, handler);
clearInterval(interval);
}
}, 100);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.