【问题标题】:Trigger Javascript Event on Add to DOM在添加到 DOM 时触发 Javascript 事件
【发布时间】:2012-12-13 23:50:29
【问题描述】:

有谁知道在将元素添加到 DOM 后如何在 Javascript 中触发事件?

大致思路是这样的:

var elem = document.createElement('div');
elem.addEventListener('ON_ADD_TO_BODY', function(){console.log(elem.parentNode)});
//... LATER ON ...
parentElemInBody.appendChild(elem); // <- Event is triggered here after append

在将元素添加到 DOM 之前不应触发某些函数,因此在添加元素之前延迟执行是有意义的。

有没有一种方法可以做到这一点,而无需稍后明确调用它们,或者我应该做一些包含setTimeout 和检查元素是否已添加到 DOM 的 hack?

【问题讨论】:

    标签: javascript dom dom-events


    【解决方案1】:

    使用 DOMNodeInserted 突变事件。

    这里的文档:https://developer.mozilla.org/en-US/docs/DOM/Mutation_events

    如上页给出的示例用法:

    element.addEventListener("DOMNodeInserted", function (ev) {
      // ...
    }, false);
    

    注意:2016 年 4 月 17 日

    突变事件目前已被弃用。现在推荐的方法是Mutation Observers

    【讨论】:

    • 我什至不知道那些存在!我确实需要支持 IE9- 虽然 :( 并且那些性能命中的 cmets 并不是很让人放心。我知道我没有在问题中指定这一点,所以你的答案是正确的,但我确实需要考虑所有这些。是否有至少支持 IE9- 的混合方法?
    • 对于不支持上述功能的浏览器,您可能需要推出一个计时器,它会定期检查父元素的子元素并触发一些回调。
    猜你喜欢
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多