【问题标题】:Fire a jQuery function at runtime [duplicate]在运行时触发 jQuery 函数 [重复]
【发布时间】:2011-05-11 10:48:12
【问题描述】:

可能重复:
Detect element content changes with jQuery

我有一个包装 div 说

<div id="placesNewCheckinContainer" style="display:none">
</div>

如果在运行时任何 Dom 元素被插入/删除到该placesNewCheckinContainer 中,我想要一个 jQuery 函数。 帮助我如何实现这一点。 谢谢

【问题讨论】:

  • 运行时是什么意思?在页面加载或页面加载时?

标签: jquery html


【解决方案1】:

jQuery 有一个更改事件,但它只用于用户输入字段(浏览器触发这些事件)。您列出的 DIV 的操作必须来自代码。那么为什么不找到操作发生的位置,然后在其中添加您需要的任何逻辑呢?

不久前我发现了一篇很棒的文章"Custom events in jQuery open doors to complex behaviors"

这涵盖了您可以使用自定义绑定做的一些很酷的事情。但是您仍然需要触发触发器,这意味着操作更改 div 内容的代码以触发触发器,或者设置定时间隔来监视 div 的内容以进行触发触发器的更改(我不推荐- 因为它不是即时的并且会导致不必要的开销)。

【讨论】:

    【解决方案2】:

    完全跨浏览器的方式没有方便的方法来做到这一点。 Firefox、Chrome 和 Safari 都支持 DOMSubtreeModified 事件,该事件将触发对特定元素内 DOM 的任何修改。上述浏览器和 Opera 支持 DOMNodeInsertedDOMNodeRemoved,它们也可以完成这项工作。

    $("#placesNewCheckinContainer").bind("DOMNodeInserted DOMNodeRemoved", function () {
        alert("Something happened inside #placesNewCheckinContainer");
    });
    

    很遗憾,IE 不支持任何这些事件。它确实有自己的事件可以部分完成这项工作,但是 - onpropertychange。这可以在 innerHTML 的值发生更改时通知您,但仅适用于直接子代的修改,而不是所有后代的修改。

    【讨论】:

      【解决方案3】:

      我知道处理这种情况的唯一方法是突变事件。

      http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-mutationevents

      这些事件仍未得到广泛支持;但是你有像

      这样的事件
      • onsubtree 修改
      • onnode 插入
      • onnode 已移除
      • ondomnode 从文档中移除
      • ondomnode 插入到文档中
      • onattrmodified
      • 修改字符数据

      您可能还想查看类似的帖子,例如:

      Detect element content changes with jQuery

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-10
        • 1970-01-01
        • 2016-07-01
        • 1970-01-01
        • 2019-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多