2012-01-15 9 views
10

मैं माता-पिता 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> 
+2

आप नहीं, लगता है कि अगर एक घटना उत्सर्जन की तरह इससे पहले कि आप डोम – Raynos

+0

में इंजेक्षन एक बेहतर समाधान मुझे नहीं पेज के असली js कोड है तो मैं न डायन घटनाओं पता कर सकते हैं उपयोग किया जाता है। –

+3

** का पता लगाने के लिए केवल मेरे कोड को इंजेक्ट करना ** अस्वीकरण: ** DOMNodeInserted को बहिष्कृत किया गया है। – Raynos

उत्तर

3

मान लें आपके ईवेंट हैंडलर इस तरह दिखता है:

function(evt) { 
    // whatever 
} 

हैंडलर के अंदर, evt.relatedNode तत्व है जो में प्रविष्टि प्रदर्शन किया जा रहा है। आप इसे चालू कर सकते हैं और ईवेंट को अनदेखा या संसाधित करने का निर्णय ले सकते हैं।

See it in action

+0

जॉन, आपने मुझे बचाया , धन्यवाद :) –

+1

@ निधलौउसी - बस इतना ही पता है, यह IE8 में मेरे लिए काम नहीं कर रहा है। – jfriend00

+0

यह ठीक है, यह Google क्रोम एक्सटेंशन –

0

तुम क्यों DOMNodeInserted का उपयोग नहीं करते, लेकिन ईवेंट हैंडलर में एक चेक/अगर बयान जोड़ सकते हैं ताकि वास्तविक तर्क केवल तब चलता है जब आप यह चाहते हैं?

+0

क्या आप समझा सकते हैं ? –

+1

DOMNodeInserted IE (8 और नीचे?) द्वारा समर्थित नहीं है और इसे बहिष्कृत किया गया है: http://www.w3.org/TR/DOM-Level-3-Events/#event-type-DOMNodeInserted –

7

अभिभावक पर DOMNodeInserted का उपयोग करें और अतिरिक्त तत्व के event.target.parentNode देखें। यदि इसका idparent है, तो तत्व प्रत्यक्ष वंशज है।

डेमो: http://jsfiddle.net/ThinkingStiff/f2w7V/

document.getElementById('parent').addEventListener('DOMNodeInserted', function (event) { 

    if(event.target.parentNode.id == 'parent') { 
     //direct descendant   
    }; 

}, false); 
+0

के लिए है यह मेरे लिए काम नहीं करता है, लेकिन मैं कोशिश कर रहा हूं –

+1

@ निधलरोसीसी डेमो लिंक ने एक 'अलर्ट() 'नहीं फेंक दिया? – ThinkingStiff

+0

मैंने http://jsfiddle.net/KEjke/1 –

संबंधित मुद्दे