簡體   English   中英

將滾動事件處理程序附加到動態創建的元素

[英]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.

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