将滚动事件处理程序附加到动态创建的元素

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);

但它只对冒泡有效,而且滚动事件似乎禁用了冒泡,所以它不起作用。

感谢 this answer 我能够做到:

function addPostponedEventListener(selector, eventName, handler)
{
    let interval = setInterval(() => 
    {
        let el = document.querySelector(selector);
        if (el)
        {
            el.addEventListener(eventName, handler);
            clearInterval(interval);
        }
    }, 100);
}