I want to detect the insertion of a new div
element only as a direct child of the parent div
.
Example:
<div id="parent">
<div id="child1"></div>
<div id="child2"></div>
<div id="newChild">I want this element to be detected</div>
</div>
The DOMNodeInserted()
event is not a solution for me because it is triggered on every element insertion, not just children.
Like:
<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>
HTML DOM Element hasChildNodes() The hasChildNodes() method returns true if the specified node has any child nodes, otherwise false.
Use one of the firstChild, childNodes. length, children. length property to find whether element has child or not. hasChildNodes() method can also be used to find the child of the parent node.
We can detect if an element has been added to DOM using the MutationObserver object. This provides the ability to observe for changes being made to the DOM tree.
Use DOMNodeInserted
on the parent and check the event.target.parentNode
of the added element. If its id
is parent
, then the element is a direct descendant.
Demo: http://jsfiddle.net/ThinkingStiff/f2w7V/
document.getElementById( 'parent' ).addEventListener( 'DOMNodeInserted', function ( event ) {
if( event.target.parentNode.id == 'parent' ) {
//direct descendant
};
}, false );
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With