【问题标题】:fire javascript event on object creation在对象创建时触发 javascript 事件
【发布时间】:2010-07-23 18:07:00
【问题描述】:

有没有办法在创建某种类型的对象时触发事件?

我有一个带有editableContent="true"<div> 元素,当用户在<div> 中按下回车键时,会创建一个新的<div>,它只占用该行。每当在我的原始 <div> 对象中创建 <div> 对象时,是否有可能触发事件?

我知道这样做的一种方法是侦听击键并在按下“输入”键时,执行一堆逻辑来弄清楚要做什么,但这似乎不太优雅 - 所以它会很棒如果有其他方法。

谢谢!

【问题讨论】:

    标签: javascript html dom javascript-events


    【解决方案1】:

    有一堆DOM Events,例如,其中一些是supported by firefox。但我认为 IE 不会只支持其中一种。 Here 是一个完整的列表。 首先,您可以在每次创建新 div 时触发自定义事件,或者您有一个 settimeout 每秒检查 div 子节点的数量是否发生变化。

    【讨论】:

    • DOMNodeInserted 事件应该是我需要的。幸运的是它得到了除 IE 之外的所有人的支持。
    【解决方案2】:

    你有一个函数可以在你按下回车键时创建一个 div。为什么不在它的末尾添加一个函数调用。

    function createDiv(){
      //create div 
      //append div
      divCreated();
    }
    

    【讨论】:

    • 我没有按回车键创建 div 的功能,div 是自动创建的(这只是 contentEditable=true 对象的标准行为;)
    【解决方案3】:

    新元素的创建没有默认回调。我想到的第一件事 - 您可以为 mouseUp 事件添加事件侦听器并检查内容增量(更改的部分) - 如果它看起来像带有正则表达式的元素标记。

    【讨论】:

      【解决方案4】:

      每个寻找对 DOM 变化做出反应的方法的人都应该考虑MutationObserver。这是目前在所有最新(甚至不是所有现代而是最新!)浏览器中实现的标准 DOM4 功能。

      【讨论】:

        猜你喜欢
        • 2014-08-25
        • 2014-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多