हालाँकि यह एक बहुत पुराना प्रश्न है, मैंने सोचा कि हाल की जानकारी के साथ इसे अपडेट करना अच्छा होगा;
JQuery 1.8 के बाद से jQuery.parseHTML () फ़ंक्शन है जो अब तत्वों को बनाने का एक पसंदीदा तरीका है। इसके अलावा, HTML को पार्स करने के साथ कुछ समस्याएँ हैं $('(html code goes here)')
, उदाहरण के लिए आधिकारिक jQuery वेबसाइट अपने जारी नोटों में निम्नलिखित का उल्लेख करती है :
रिलैक्स्ड HTML पार्सिंग: आप एक बार फिर $ (htmlString) में टैग से पहले अग्रणी स्थान या नई सूची बना सकते हैं। हम अभी भी दृढ़ता से सलाह देते हैं कि आप बाह्य स्रोतों से प्राप्त HTML को पार्स करते समय $ .parseHTML () का उपयोग करते हैं, और भविष्य में HTML पार्सिंग में और परिवर्तन कर सकते हैं।
वास्तविक प्रश्न से संबंधित करने के लिए, उदाहरण के लिए इसका अनुवाद किया जा सकता है:
this.$OuterDiv = $($.parseHTML('<div></div>'))
.hide()
.append($($.parseHTML('<table></table>'))
.attr({ cellSpacing : 0 })
.addClass("text")
)
;
जो दुर्भाग्य से सिर्फ उपयोग करने की तुलना में कम सुविधाजनक है $()
, लेकिन यह आपको अधिक नियंत्रण प्रदान करता है, उदाहरण के लिए आप स्क्रिप्ट टैग को बाहर करना चुन सकते हैं ( onclick
हालांकि यह इनलाइन स्क्रिप्ट को छोड़ देगा ):
> $.parseHTML('<div onclick="a"></div><script></script>')
[<div onclick="a"></div>]
> $.parseHTML('<div onclick="a"></div><script></script>', document, true)
[<div onclick="a"></div>, <script></script>]
इसके अलावा, यहाँ शीर्ष उत्तर से एक मानक को नई वास्तविकता के लिए समायोजित किया गया है:
जेस्बिन लिंक
jQuery 1.9.1
$ .parseHTML: 88ms
$ ($। parseHTML): 240ms
<div> </ div>: 138ms
<div>: 143ms
createElement: 64ms
ऐसा लगता है कि parseHTML
की createElement
तुलना में बहुत करीब है $()
, लेकिन एक नए jQuery वस्तु में परिणाम लपेटने के बाद सभी बूस्ट चला गया है