2013-11-22 3 views

ответ

18

Использование Mutation Observers как предложено @Qantas в его answer

Вы можете использовать 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'); 
}); 

MDN Docs

+4

Мутации являются устаревшими, этот ответ больше не должен быть правильным. Наблюдатели за мутациями были назначены в качестве замены для Mutation Events_, поэтому ответ Qantas правильный. https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events и https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver – Parziphal

3

Вы должны связать DOMSubtreeModified событие

$("#parent").bind("DOMSubtreeModified",function(){ 
    console.log('changed'); 
}); 

http://jsfiddle.net/WQeM3/

+0

'события DOMSubtreeModified' осуждаются: [Могу ли я использовать] события (https://caniuse.com/#search=DOMSubtreeModified) – Cody

46

Не используйте такие мутационные события, как DOMNodeInserted и DOMNodeRemoved.

Вместо этого используйте DOM Mutation Observers, которые поддерживаются во всех современных браузерах, кроме IE10 и ниже (Can I use). Наблюдатели за мутацией предназначены для замены событий мутации (которые устарели), поскольку они, как было установлено, имеют низкую производительность из-за flaws in its design.

var x = new MutationObserver(function (e) { 
    if (e[0].removedNodes) console.log(1); 
}); 

x.observe(document.getElementById('parent'), { childList: true }); 
+4

Спасибо за ответ, но * Наблюдатели за мутациями * имеют плохое поведение: я хочу установить наблюдателя на узел, который будет привязан к дереву позже. Я не знаю родителя (с «DOMNodeRemoved», я мог бы. Любые идеи? Я хочу, чтобы узел слушал самоуничтожение. – DenisKolodin

+0

@DenisKolodin wow, я не заметил этого комментария, извините. Для потомков на это должен ответить [ этот вопрос] (https://stackoverflow.com/q/31798816/2074608). Это означает размещение события на уровне документа, но события мутации имеют такое большое ограничение производительности, что, вероятно, не имеет значения. –

Смежные вопросы