दिलचस्प पोस्ट
दूसरे फ़ील्ड से समय के साथ एक फ़ील्ड से तारीख को गठबंधन कैसे करें – एमएस SQL ​​सर्वर JavaScript या jQuery का उपयोग करके एक नया टैब में यूआरएल कैसे खोल सकता है? एसक्यूएल के जरिए टाइप टाइम की एक योग की गणना करें XSD स्कीमा का उपयोग करते हुए एक्सएमएल सत्यापन किसने "मेरी" हत्या की प्रक्रिया और क्यों? जावा हीप आकार को स्थायी रूप से बढ़ाएं? कैसे जावास्क्रिप्ट में एक सरणी गठबंधन करने के लिए आलसी वाल क्या करता है? स्निपिंग टूल के नेट इक्वलेंट आवरण वर्ग और आदिम प्रकार का उपयोग कब करना स्क्रॉलव्यू टच हैंडलिंग के भीतर क्षैतिज स्केल दृश्य अजगर में फ़ाइल की अंतिम x लाइनों को खोजने का सबसे कारगर तरीका नोटपैड ++ में XML को कैसे प्रारूपित करना है? जावा – क्लास के बजाय इंटरफ़ेस प्रकार से घोषणा कर्नेल मॉड्यूल के साथ संचार करने के लिए नेटलिंक सॉकेट का उपयोग कैसे करें?

क्या एक jquery घटना है कि आग जब एक नया नोड dom में डाला जाता है?

क्या डोमेन पर डालें जाने पर डॉट तत्व पर एक घटना jquery आग है?

उदाहरण के लिए कहें कि मैं एजाक्स के माध्यम से कुछ सामग्री लोड करता हूं और इसे DOM और जावास्क्रिप्ट के किसी दूसरे टुकड़े में जोड़ देता हूं, मैं .live () का उपयोग करते हुए एक घटना जोड़ सकता हूं, जब एक विशिष्ट चयनकर्ता से मिलान करने वाला कोई ईवेंट DOM में जोड़ा जाता है तो ईवेंट पर आग लग जाती है कहा तत्व $ (दस्तावेज़) के समान .ready () लेकिन सामग्री पर जो गतिशील रूप से DOM में जोड़ा गया है

मैं क्या सपना देख रहा हूं:

$('.myClass').live('ready', function() { alert('.myClass added to dom'); }); 

अगर jquery ऐसी बात का समर्थन नहीं करता है, तो क्या कोई अन्य तरीका है कि मैं इस कोड को संशोधित किए बिना इस कार्यक्षमता को हासिल कर सकता हूं जो वास्तव में प्रारंभिक डोमेन हेरफेर करता है?

वेब के समाधान से एकत्रित समाधान "क्या एक jquery घटना है कि आग जब एक नया नोड dom में डाला जाता है?"

.livequery() प्लग इन अब भी इस आला की जरूरत को पूरा करता है, जैसे:

 $('.myClass').livequery(function() { alert('.myClass added to dom'); }); 

यदि आप इसे ऊपर की तरह एक कॉलबैक फ़ंक्शन पास करते हैं, तो यह प्रत्येक नए तत्व के लिए चलाएगा, जो आरंभ में और जैसा कि वे जोड़े गए हैं। समारोह के अंदर this सिर्फ-जोड़ा तत्व को संदर्भित करता है

.live() घटनाओं के लिए बुलबुले सुनता है, तो इस संबंध में "तत्वों को जोड़ा जाता है" स्थिति में, जब यह उपयुक्त नहीं होता है, .livequery() (प्लगइन) पूरी तरह से .livequery() के अतिरिक्त द्वारा प्रतिस्थापित नहीं किया गया था कोर, केवल घटना बुदबुदाती भाग (अधिकांश भाग के लिए) था।

पदावनत : नीचे @ मेग्लियो की टिप्पणी के अनुसार, DOMNodeInserted ईवेंट को बहिष्कृत किया गया है, और भविष्य में कुछ अज्ञात समय पर वेब से निकाल दिया जाएगा। सर्वोत्तम परिणामों के लिए, उत्परिवर्तन ओब्सर्वर एपीआई के बारे में सीखना शुरू करें।

नीचे @ डाइन के उत्तर देखें

अगर आप 'डोमोडएन्स्टेक्टेड' घटना को दस्तावेज़ या बॉडी में सीधे बाँध देते हैं, तो इसे प्रत्येक बार कुछ भी डाला जाएगा निष्पादित किया जाएगा। यदि आप चाहते हैं कि कॉलबैक केवल एक विशेष प्रकार का तत्व जोड़ा जाए, तो आप प्रत्यायोजित ईवेंट का उपयोग करने के लिए बुद्धिमान हो जाएंगे

आमतौर पर, यदि आप डीओएम में तत्वों का एक वर्ग जोड़ रहे हैं तो आप उन्हें एक सामान्य माता-पिता के साथ जोड़ देंगे। तो इस तरह से ईवेंट हैंडलर को संलग्न करें:

 $('body').on('DOMNodeInserted', '#common-parent', function(e) { if ($(e.target).attr('class') === 'myClass') { console.log('hit'); } }); 

मूल रूप से मके के ऊपर जैसा ही उत्तर है , लेकिन जब से आप एक प्रत्यक्ष ईवेंट हैंडलर के बजाय एक प्रत्यायोजित ईवेंट हैंडलर का उपयोग कर रहे हैं, तो उस कोड को कम बार निकाल दिया जाएगा

ध्यान दें:

 $('body').on('DOMNodeInserted', '.myClass', function(e) { console.log(e.target); }); 

यह भी काम करने लगता है … लेकिन मुझे पता नहीं क्यों

यदि आप कटिंग एज पर रह रहे हैं तो आप उत्परिवर्तन ऑब्ज़र्वर का उपयोग कर सकते हैं 🙂

  var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; var list = document.querySelector('ol'); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.type === 'childList') { var list_values = [].slice.call(list.children) .map( function(node) { return node.innerHTML; }) .filter( function(s) { if (s === '<br>') { return false; } else { return true; } }); console.log(list_values); } }); }); observer.observe(list, { attributes: true, childList: true, characterData: true }); 

देखें: https://hacks.mozilla.org/2012/05/dom-mutation-server-reacting-to-dom-changes-without-killing-browser-performance/

संपादित करें: यह उत्तर काफी पुराना है, अब ओपेरा मिनी के अलावा सभी ब्राउसर द्वारा उत्परिवर्तन ऑब्ज़ेर्वर का समर्थन किया जाता है: http://caniuse.com/#feat=maughnobserver

इसके अलावा, यहां प्रत्यक्ष लिंक है जो एमडीएन पर एपीआई है: https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

कोई jQuery इवेंट नहीं है, लेकिन एक डोम ईवेंट है: DOMNodeInstertIntoDocument आप jQuery के विधि के आधार पर DOM ईवेंट के लिए सुन सकते हैं। इसलिए:

 $('.myClass').on('DOMNodeInsertedIntoDocument', function() { alert('myClass was inserted into the DOM'); } 

यह liveQuery का उपयोग करने के लिए बेहतर होगा क्योंकि यह प्लगइन थोड़ा बासी है (2 + साल के लिए कोई अपडेट नहीं, केवल jQuery 1.2.x के लिए समर्थन का वादा करता है)।

InsertionQuery पर एक नज़र डालें यह एक दिलचस्प लाइब्रेरी है जो नए तत्वों का पता लगाने के लिए सीएसएस का उपयोग करता है। क्योंकि यह सीएसएस का उपयोग करता है क्योंकि कोई प्रदर्शन हिट नहीं है और आप चयनकर्ता से मेल खाने वाले वास्तविक तत्वों को वापस लौटाते हैं।