13

आप एक पूरे DOM तत्व का HTML प्राप्त करना चाहते हैं (आवरण शामिल है), तो आपको निम्न (के रूप में समझाया here) कर सकते हैं:

$('#myElementId')[0].outerHTML 

लेकिन क्या आप ऐसा नहीं कर सकते हैं पर कॉल outerHTML है उदाहरण के अंदर $(this) एक क्लिक के श्रोता या चयनकर्ता समारोह शरीर गुंजाइश:

$(this).outerHTML //Doesn't complete in IntelliSense, returns undefined in browser 

या

$(this)[0].outerHTML //Correction, this DOES work, but it doesn't complete in IntelliSense 

क्योंकि IntelliSense innerHTML या outerHTML उन परिस्थितियों में नहीं दिखाया जाएगा, हालांकि वेनिला के साथ आप कर सकते हैं जावास्क्रिप्ट:

document.getElementById($(this).attr('id')).outerHTML 

तो ... इसके साथ क्या चल रहा है?

+5

क्या आप वास्तव में ब्राउज़र में ही प्रयास करते थे? मैं विशेष रूप से 'बाहरी HTML' का उपयोग करने के बिंदु को नहीं देखता लेकिन इसे काम करना चाहिए। –

+3

शायद इंटेलिसेंस यह निर्धारित करने में असमर्थ है कि '$ (यह) [0]' एक डीओएम तत्व है, इसलिए यह डीओएम सदस्यों का सुझाव नहीं देता है। –

+0

@ फ्रेडेरिक हामिदी के स्पष्टीकरण की ओर झुकाव। क्या आपको '$ (this) .get (0) .outerHTML' पर कोई इंटेलिजेंस मिलता है? –

उत्तर

22

outerHTML एक डोम संपत्ति है; jQuery सभी डीओएम गुणों का पर्दाफाश नहीं करता है।

यदि आपके पास कोई jQuery ऑब्जेक्ट है, तो आप केवल उन गुणों और विधियों तक पहुंच सकते हैं जो jQuery का खुलासा करते हैं, और इसके विपरीत डीओएम ऑब्जेक्ट्स के लिए।

ऑब्जेक्ट उन्मुख शर्तों में, jQuery ऑब्जेक्ट्स DOM ऑब्जेक्ट्स से प्राप्त नहीं होते हैं, उनमें वे होते हैं।

$x[0] कह रहा है कि आप एक jQuery ऑब्जेक्ट द्वारा प्रतिनिधित्व किए गए पहले तत्व के लिए DOM ऑब्जेक्ट प्राप्त करते हैं।

+3

प्रश्नकर्ता कहता है कि इंटेलिजेंस '$ (यह) [0] .उटरएचटीएमएल 'को पूरा करने में विफल रहता है, इसलिए यह केवल एक jQuery ऑब्जेक्ट/डोम तत्व समस्या नहीं है। –

+5

@ FrédéricHamidi: मुझे लगता है कि Intellisense यह निर्धारित करने के लिए पर्याप्त चालाक नहीं है कि एक jQuery ऑब्जेक्ट का सरणी एक्सेसर '[]' एक DOM तत्व देता है। – RichieHindle

+0

@ FrédéricHamidi यह वास्तव में * नहीं * पूरा '$ (यह) [0] .उटरएचटीएमएल' हालांकि यह ब्राउज़र में काम करता है। –

19

आप सीधे this वर्तमान वस्तु के outerHTML का उपयोग करने के बजाय परोक्ष रूप से $(this) के माध्यम से जा के रूप में इस डोम वस्तु (जो outerHTML संपत्ति है) जबकि $(this) jQuery वस्तु का प्रतिनिधित्व करता है का प्रतिनिधित्व करता है का उपयोग कर सकते हैं।

this.outerHTML 
4

jQuery चयनकर्ता एक सरणी की तरह jQuery ऑब्जेक्ट देता है जिसमें बाहरी HTML संपत्ति नहीं है।

हालांकि, jQuery परिणामी सरणी में डोम तत्व शामिल हैं।
इसका मतलब है कि आप वास्तव में इस तरह से इसका उपयोग कर सकते हैं।

$(".someClass")[0].outerHTML // it works for me 

अद्यतन: यह मेरे लिए हर ब्राउज़र में काम करता है।
मैं एक क्लिक इवेंट हैंडलर में सरणी की तरह jQuery ऑब्जेक्ट तक भी पहुंच सकता हूं। http://jsfiddle.net/13btf60p/

अद्यतन 2:

$(".someClass").click(function() 
{ 
    alert($(this)[0].outerHTML); // it works me too 
}); 

यहाँ मेरी JSFiddle है

ठीक है, अब मैं आपके सवाल का मिलता है। यह काम करना चाहिए था। क्या आपको वास्तव में ऐसे सादे और सरल निर्माण को पूरा करने के लिए इंटेलिसेन्स की आवश्यकता है?

+5

ओपी का दावा है कि '$ (यह) [0] .उटरएचटीएमएल ठीक से काम नहीं करता है। तथ्य यह है कि jQuery एक सरणी जैसी वस्तु लौटाता है अप्रासंगिक है। –

+0

@ Qantas94Heavy यह अलग-अलग ब्राउज़रों में मेरे लिए ठीक से काम करता है। मैं क्लिक ईवेंट पर '$ (यह) [0] .उटरएचटीएमएल 'तक पहुंच सकता हूं। –

+2

@YeldarKurmangaliyev लेकिन सवाल अलग है। – Jai

1

मैं भविष्य में संदर्भ के लिए डिफ़ॉल्ट विजुअल स्टूडियो सेटिंग्स में एक साधारण दोष होने के लिए सही समाधान के रूप में जो जोड़ता हूं उसे जोड़ दूंगा।

जब से मैं इस जाने दो नहीं करना चाहता था, इसलिए मैं आगे खोज की है और पता चला कि, डिफ़ॉल्ट रूप से, jQuery IntelliSense 2013

तहत

कुछ हद तक दृश्य स्टूडियो में बॉक्स से बाहर दु: खद है

उपकरण> विकल्प> पाठ संपादक> जावास्क्रिप्ट> IntelliSense>

सन्दर्भ मैं

सेट

रेफरेंस ग्रुप: "अंतर्निहित (वेब)"

और एक मौजूदा jQuery फ़ाइल जोड़ा। इसने मेरे प्रश्न के सभी मुद्दों को हल किया और इंटेलिसेन्स अब सभी सदस्यों और विधियों को सही तरीके से सुझाता है, हालांकि यह हर किसी को समय की एक गुच्छा की बजाय बॉक्स से बाहर काम करना चाहिए था।

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