जैसा कि मैं बता सकता हूं, निम्नलिखित कोड को काम करना चाहिए, <div>
तत्व बनाना, और फिर <p>
तत्व बनाना; अभिव्यक्ति का परिणाम दो तत्वों के साथ एक jQuery ऑब्जेक्ट में होना चाहिए:jQuery के बाद के तरीके नए बनाए गए तत्वों के साथ काम नहीं कर रहे हैं
$("<div>first element's content</div>").after("<p>second element's content</p>");
हालांकि, मुझे जो मिलता है वह बहुत अलग है। The documentation (शीर्षक "डिस्कनेक्ट किए गए डोम नोड्स डालने" शीर्षक देखें) मुझे बताता है कि उपर्युक्त कोड का परिणाम एक jQuery ऑब्जेक्ट में होना चाहिए, दोनों HTML स्निपेट को पकड़ना और दो डोम तत्वों का निर्माण करना चाहिए। लेकिन, जो मैंने प्राप्त किया है, jQuery के कई अलग-अलग संस्करणों में, 1.4 से ऊपर, एक jQuery ऑब्जेक्ट केवल 1 नोड के साथ है। हालांकि, निम्नलिखित कोड ठीक काम करता है, लौटने (मैं क्या विश्वास करते हैं) सही jQuery वस्तु, दो तत्वों के अंदर:
$("<div></div>").after("<p>second element's content</p>");
और यह उदाहरण के रूप में अच्छी तरह से काम करता है:
$("<div></div>").after("<p>second element's content</p>").after("<p>third element's content</p>");
ऐसा लगता है .after()
यदि पहला डोम नोड बनाया जा रहा है तो विधि ठीक काम करती है, लेकिन जब यह नहीं होती है (इसके बाद के बाद वाले डोम नोड्स की सामग्री के बावजूद)।
क्या मुझे jQuery के आंतरिक, quirky DOM मुद्दों और/या जावास्क्रिप्ट विशिष्टताओं के बारे में कुछ याद आ रहा है, या यह बस एक jQuery बग है जो संस्करण 1.4 से 1.7 के माध्यम से जारी है?
(Here's a meager JSFiddle बहुत स्पष्ट रूप से इस मुद्दे का प्रदर्शन है।)
के साथ समस्याएं हो सकती हैं जैसा कि ** elclanrs ** उत्तर में टिप्पणियों में उल्लिखित है, 'add' एक व्यवहार्य विकल्प है, और मैंने एक नया JSFiddle ] (http://jsfiddle.net/paulbruno/beFUF/) यह दिखाने के लिए कि यह काम करता है। हालांकि, यह व्याख्या नहीं करता है कि व्यवहार [डॉक्स] पर प्रदर्शित क्यों होता है (http://api.jquery.com/after/) (और यहां तक कि इसकी टिप्पणियां, "मार्क एंड्रूस्लेड" से उत्तर वाले पूरे धागे को देखें) isn ' जब उस तत्व में सामग्री होती है तो नव निर्मित तत्व की jQuery ऑब्जेक्ट्स की 'बाद' विधि के लिए उपलब्ध नहीं है। –