0

我正在使用 DOMSubtreeModified 来获取 div 中的所有 DOM 更改。

var stoppedTyping="";
$(".jqte_editor").on("DOMSubtreeModified", function(e) {
    if (stoppedTyping) clearTimeout(stoppedTyping);
      stoppedTyping = setTimeout(function(){
        var editorText = $(".jqte_editor").html();

        createUniqueId($(".jqte_editor"));
        console.log(editorText);
      }, 1000);
});

在上面的代码中,在 DOM 更改时,我正在调用 createUniqueId() 函数。

function createUniqueId(tag){
   var children = tag.children();
   if(children.length > 0)
   {
    for ( var i = 0; i < children.length; i++) {
        var child = children[i];
        var childId = $(child).attr("id");
        if(childId == undefined)
        {
            var id = UUID.generate();
            $(child).attr('id', id);
        }
    }
   }       
}

上面的代码为每个没有 id 的标签创建了一个唯一的 ID。
在分配 Id 时,会触发 DOMSubtreeModified 事件。
如何避免它在分配 ID 时触发 DOMSubtreeModified 事件?

4

1 回答 1

0

DOMSubtreeModified 的问题在于它是一个非常粗粒度的事件。如果您想让事件处理程序更具体,也许您不需要阻止事件触发。你真的想对哪个事件做出反应?如果您可以通过在事件处理程序中使用事件对象e或通过简单地绑定更细粒度的事件处理程序(如 OnKeyPress)来解决这个问题,您可能不会遇到这个问题。

于 2013-10-16T11:09:29.560 回答