2011-11-14 24 views
13

मैं मान लिया जाये कि मैं इतने पर इस चलानेjQuery डोम प्राप्त तत्व

<input type="text" value="" size="28" maxlength="140" tabindex="1" placeholder="search" class="textbox" name="q" autocomplete="off"> 

कैसे मिलता है मैं

$(":input[type=text]:first") 

है कहो?

अद्यतन मैं .parent() पर कॉल नहीं करना चाहता क्योंकि मेरे पास मूल तत्व में बहुत सारी चीज़ें हैं।

+1

बस एक ध्यान दें: अगर तुम सच में अपनी विशेषता चयनकर्ताओं बोली चाहिए। '$ (": इनपुट [प्रकार = 'पाठ']: पहले ")'। –

+0

हाँ यह केवल एक उदाहरण था, यह वास्तविक चयनकर्ता नहीं है। मैं आमतौर पर वैसे भी विशेषता चयनकर्ताओं का उपयोग करने से बचने और टालने का प्रयास करता हूं। – bevacqua

+1

संभावित डुप्लिकेट [चयनित तत्व के बाहरी HTML प्राप्त करें] (http://stackoverflow.com/questions/2419749/get-selected-elements-outer-html) – Blazemonger

उत्तर

20

An old trick:

var selector = ":input[type=text]:first"; 

var str = $(selector).clone().wrap('<div/>').parent().html(); 

अद्यतन आप .parent() बुला जब से तुम एक अनाथ क्लोन के साथ काम कर रहे हैं के बारे में चिंता करने की जरूरत नहीं मूल चयनकर्ता का।

+1

क्लोन महत्वपूर्ण क्यों है? अगर मैं फ्लाई पर एक वस्तु बना रहा हूं, तो क्या इससे कोई फर्क पड़ता है? – casraf

+1

फ्लाई पर आंतरिक तत्व नहीं बनाया गया है; इसे डीओएम से चुना जा रहा है, इसलिए हम इसे डीओएम में बदलने से बचने के लिए क्लोन करते हैं। – Blazemonger

+0

$ ("ए") के बारे में क्या। एचटीएमएल ('')। प्रोप ("बाहरी HTML"))? –

4

किसी बनाए गए तत्व में संलग्न करके jQuery.html() का उपयोग करें।

$('<div/>').append($(":input[type=text]:first").clone()).html() 

यहाँ एक उदाहरण प्रदान एक बेला जाता है: http://jsfiddle.net/Zwbmx/1/

+1

लेकिन अब आपने मूल तत्व को डीओएम से बाहर ले जाया है। – Blazemonger

+0

यह डीओएम से इनपुट को हटा देगा और इसे एक नए बनाए गए div में जोड़ देगा। आपको पहले इनपुट क्लोन करने की आवश्यकता है। –

+0

@ अपना दायां रॉकेट मैंने पहले तत्व को क्लोन करने के लिए कोड को संशोधित किया। –

-1

कैसे के बारे में:

var str = $(selector)[0] 

हो सकता है कि एक जांच है कि वहाँ एक तत्व लौटे जोड़ें।

0

@Blazemonger ने जो उत्तर दिया है उसके बाद, यदि आप सर्वर पर यह HTML सामग्री भेजने जा रहे हैं, तो यह सभी अनावश्यक टैग, श्वेत-रिक्त स्थान और लाइन-ब्रेक से छुटकारा पाने के लायक है जो कोई मूल्य नहीं जोड़ते हैं।

var quote = $(".invoice") //get hidden print-version DOM element 
    .clone() 
    .wrap('<div/>') 
    .parent() 
    .html() 
    .replace(/ /g, '') //get rid of indentation spaces 
    .replace(/(\r\n|\n|\r)/gm, "") //get rid of line breaks 
    .replace(/<!--[\s\S]*?-->/g, ""); //get rid of comment tags 

मेरे एचटीएमएल 50kb, इस चीज से छुटकारा पाने के बाद, यह 4KB करने के लिए कम हो गया था!

25

कैसे

के बारे में
$(selector).prop("outerHTML"); 
+1

यह सही जवाब होना चाहिए –

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