避免在向标记添加ID时触发DOMSubtreeModified事件

时间:2013-10-16 10:35:15

标签: javascript jquery html dom4

我使用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事件?

1 个答案:

答案 0 :(得分:0)

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