Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DOM : How to detect a new child elements?

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>
like image 950
Nidhal Rouissi Avatar asked Jan 15 '12 01:01

Nidhal Rouissi


People also ask

How do I know if my DOM element has children?

HTML DOM Element hasChildNodes() The hasChildNodes() method returns true if the specified node has any child nodes, otherwise false.

How do you check if an element has a child?

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.

How do you check if an element is added to DOM?

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.


1 Answers

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 );
like image 184
ThinkingStiff Avatar answered Sep 23 '22 23:09

ThinkingStiff