Предотвращение возникновения события DOMSubtreeModified при добавлении идентификатора в тег
Я использую DOMSubtreeModified, чтобы получить все изменения DOM в div.
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);
}
}
}
}
Приведенный выше код создает уникальный идентификатор для каждого тега, который не имеет идентификатора.
При назначении идентификатора происходит событие DOMSubtreeModified.
Как я могу избежать запуска события DOMSubtreeModified при назначении идентификатора?
1 ответ
Проблема с DOMSubtreeModified заключается в том, что это очень грубое событие. Возможно, вам не нужно предотвращать запуск события, если вы хотите, чтобы ваш обработчик событий был более конкретным. На какое событие вы действительно хотите отреагировать? Если бы вы могли подать это, используя объект события e
в вашем обработчике событий или просто связав более детализированный обработчик событий, такой как OnKeyPress, у вас, вероятно, не возникнет этой проблемы.