Скажем, у меня были div#parent
и I append
и remove
элементы с помощью jquery. Как я смогу обнаружить, когда такое событие происходит в элементе div#parent
?Как определить элемент, добавляемый/удаляемый из элемента dom?
ответ
Использование 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');
});
Вы должны связать DOMSubtreeModified
событие
$("#parent").bind("DOMSubtreeModified",function(){
console.log('changed');
});
'события DOMSubtreeModified' осуждаются: [Могу ли я использовать] события (https://caniuse.com/#search=DOMSubtreeModified) – Cody
Не используйте такие мутационные события, как 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 });
Спасибо за ответ, но * Наблюдатели за мутациями * имеют плохое поведение: я хочу установить наблюдателя на узел, который будет привязан к дереву позже. Я не знаю родителя (с «DOMNodeRemoved», я мог бы. Любые идеи? Я хочу, чтобы узел слушал самоуничтожение. – DenisKolodin
@DenisKolodin wow, я не заметил этого комментария, извините. Для потомков на это должен ответить [ этот вопрос] (https://stackoverflow.com/q/31798816/2074608). Это означает размещение события на уровне документа, но события мутации имеют такое большое ограничение производительности, что, вероятно, не имеет значения. –
- 1. Как я могу определить XPath элемента DOM?
- 2. Как определить, отображается ли элемент DOM?
- 3. Как определить элемент элемента кнопки?
- 4. Удаление элемента из DOM
- 5. Удаление элемента из DOM
- 6. Получение html элемента DOM из элемента JQuery
- 7. Как найти элемент dom внутри другого элемента dom?
- 8. Как выбрать динамический элемент DOM элемента DOM? (Селектор CSS)
- 9. Как установить вид ребенка элемент из существующего элемента в DOM
- 10. Получить ComponentRef из элемента DOM
- 11. Как создать выделение из DOM самого элемента
- 12. Как я могу ссылаться на элемент DOM на элемент DOM?
- 13. Angular2 - определить имя сфокусированного элемента DOM
- 14. Как удалить элемент DOM из DOM и из памяти?
- 15. Что такое элемент «из DOM»?
- 16. Как определить конечный элемент в дереве узлов XML DOM
- 17. Как получить дочерний элемент из элемента шаблона?
- 18. Выберите следующий элемент DOM после текущего элемента
- 19. Доступ ребенка элемент выбранного элемента DOM
- 20. PHP DOM html получить элемент из другого элемента
- 21. Преобразование динамически созданного элемента в элемент DOM
- 22. Как удалить прослушиватель событий из элемента DOM?
- 23. Возможно ли получить элемент DOM элемента vuejs?
- 24. Исключение элемента stal элемента Webdriver, когда элемент DOM не изменился
- 25. Как определить, какой тип DOM элемента с помощью JQuery
- 26. Удаление элемента из dom при щелчке
- 27. Последствия для удаления элемента из DOM?
- 28. Скрыть атрибут элемента из DOM
- 29. Как определить, какой элемент DOM соответствует элементам наблюдаемого массива Knockout?
- 30. Найти объект из элемента dom в событии
Мутации являются устаревшими, этот ответ больше не должен быть правильным. Наблюдатели за мутациями были назначены в качестве замены для 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