DOM: Как определить новые дочерние элементы?
Я хочу обнаружить вставку нового элемента div
только как прямой дочерний элемент родительского div
.
Пример:
<div id="parent">
<div id="child1"></div>
<div id="child2"></div>
<div id="newChild">I want this element to be detected</div>
</div>
Событие DOMNodeInserted()
не является решением для меня, потому что оно запускается при каждой вставке элемента, а не только для детей.
Вроде:
<div id="parent">
<div id="child1">
<span>I don't want this new element to be detected</span>
</div>
<div id="child2"></div>
<div id="child3"></div>
</div>
Ответы
Ответ 1
Предположим, что обработчик событий выглядит следующим образом:
function(evt) {
// whatever
}
Внутри обработчика evt.relatedNode
- это элемент, в который выполняется вставка. Вы можете включить его и решить игнорировать или обработать событие.
Посмотрите на действие.
Ответ 2
Используйте DOMNodeInserted
для родителя и проверьте event.target.parentNode
добавленного элемента. Если его id
- parent
, то этот элемент является прямым потомком.
Демо: http://jsfiddle.net/ThinkingStiff/f2w7V/
document.getElementById( 'parent' ).addEventListener( 'DOMNodeInserted', function ( event ) {
if( event.target.parentNode.id == 'parent' ) {
//direct descendant
};
}, false );
Ответ 3
Почему вы не используете DOMNodeInserted, но добавляете в обработчик события инструкцию check/if, чтобы реальная логика выполнялась только тогда, когда вы хотите?