Скажем, что у меня были элементы div#parent
и я append
и remove
, используя jquery. Как я могу обнаружить, когда такое событие происходит с элементом div#parent
?
Как определить элемент, добавляемый/удаляемый из элемента dom?
Ответ 1
Используйте Наблюдатели мутаций, как это было предложено @Qantas в ответе
Вы можете использовать DOMNodeInserted и DOMNodeRemoved
$("div#parent").on('DOMNodeInserted', function(e) {
console.log(e.target, ' was inserted');
});
$("div#parent").on('DOMNodeRemoved', function(e) {
console.log(e.target, ' was removed');
});
Ответ 2
Не используйте такие мутационные события, как DOMNodeInserted и DOMNodeRemoved.
Вместо этого используйте DOM Mutation Observers, которые поддерживаются во всех современных браузерах, кроме IE10 и ниже (Могу ли я использовать). Наблюдатели за мутацией предназначены для замены событий мутации (которые были устаревшими), поскольку они, как было установлено, имеют низкую производительность из-за недостатков в своем дизайне.
var x = new MutationObserver(function (e) {
if (e[0].removedNodes) console.log(1);
});
x.observe(document.getElementById('parent'), { childList: true });
Ответ 3
Вы должны привязать событие DOMSubtreeModified
$("#parent").bind("DOMSubtreeModified",function(){
console.log('changed');
});