2010-03-31 13 views
11

जबकि (jQuery एचटीएमएल के साथ स्वयं को बंद कर दिया तत्वों बनाने) निम्न समस्या होता है:jQuery एचटीएमएल() और स्वत: बंद होने टैग

$('#someId').html('<li><input type="checkbox" /></li>') 

<li><input type="checkbox"></li> 

पैदा करेगा यह सही ढंग से <li> टैग बंद कर देता है लेकिन <input>

यह आंतरिक HTML से एक मुद्दा प्रतीत होता है जिसका उपयोग HTML() फ़ंक्शन में किया जाता है।

मैं हर जगह देखा है और इस के लिए एक समाधान पाया, लेकिन पेज के रूप में आप में देख अब उपलब्ध नहीं है है: http://dev.jquery.it/ticket/3378

किसी को जानता है कि यह कैसे तय करने के लिए?

+0

नहीं तुम सिर्फ $ ('# someId') को बदल सकते हैं एचटीएमएल ('

  • ') – Avitus

    +0

    आप उपयोग कर रहे हैं। एक्सएचटीएमएल समापन विधि। क्या आप यही चाहते हैं या सिर्फ HTML? – dscher

    +0

    आपको एचटीएमएल – theonlygusti

    उत्तर

    7

    स्पष्ट करने के लिए, इस मान्य HTML है:

    <input type="checkbox"> 
    

    और इस (एक्सएचटीएमएल सहित) मान्य XML है:

    <input type="checkbox"/> 
    

    लेकिन यह नहीं मान्य HTML है। ऐसा कहा जा रहा है कि, अधिकांश ब्राउज़र शायद इसे स्वीकार करेंगे (लेकिन यदि दस्तावेज़ आपके लिए कुछ भी है तो दस्तावेज़ सत्यापन विफल हो जाएगा)।

    html()innerHTML का उपयोग करता है। आईई और संभवतः अन्य ब्राउज़रों में इसमें समस्याएं हैं क्योंकि एक्सएचटीएमएल अभी भी एक HTML डोम के रूप में मॉडलिंग है। Internal IE-HTML DOM still isn’t XHTML compliant देखें।

    असल में, एक्सएचटीएमएल का उपयोग करने के बहुत कम कारण हैं। यह एक क्रॉस ब्राउज़र दुःस्वप्न है। विस्तृत सारांश के लिए XHTML - Is writing self closing tags for elements not traditionally empty bad practise? क्यों देखें, खासकर पहला जवाब।

    +0

    का उपयोग नहीं करना चाहिए मैं xhtml का उपयोग कर रहा हूं ... – UXTE

    +0

    लेकिन यह सही नहीं है एक्सएचटीएमएल - "एक्सएचटीएमएल में, टैग ठीक से बंद होना चाहिए, जैसे ।" – dscher

    +1

    @ पेड्रो मेरी सलाह है "एक्सएचटीएमएल का उपयोग न करें"। यह एक क्रॉस-ब्राउज़र दुःस्वप्न का थोड़ा सा है। Http://stackoverflow.com/questions/348736/xhtml-is-writing-self-closing-tags-for-elements-not-tradically-empty-bad-pra – cletus

    1

    एचटीएमएल 5 के युग में, कोई तर्क दे सकता है कि <input type="checkbox"> और <input type="checkbox" /> समान शून्य तत्व के समान मान्य प्रतिनिधित्व हैं।

    जबकि यह सच है, कारण innerHTML अभी भी /> बिना शून्य तत्वों को धारावाहिक दोहरा है:

    • एक शून्य तत्व एक शून्य तत्व कैसे आप इसे ब्राउज़र को प्रतिनिधित्व की परवाह किए बिना है। जब तक ब्राउज़र ने तत्व का निर्माण किया है, तब तक इसका मार्कअप अप्रासंगिक है, और जहां तक ​​डीओएम का संबंध है, यह input प्रकार का प्रकार चेकबॉक्स है। तत्व का "टैग" प्रासंगिक स्थान केवल tagName संपत्ति है, और even that has its own quirk है।

    • वहाँ करने के लिए एक ब्राउज़र के लिए कोई कारण नहीं है शुरू/> वाक्य रचना के साथ एक शून्य तत्व serializing जब एचटीएमएल 5 ही है, एचटीएमएल, एक्सएमएल नहीं के आधार पर किया जा रहा के आधार पर, यह आवश्यकता नहीं है। ऐसा इसलिए करना क्योंकि यह /> सिंटैक्स का उपयोग करने के लिए समान रूप से मान्य है, बिल्कुल शून्य लाभ के लिए विरासत साइटों के साथ संगतता को तोड़ देता है (क्योंकि /> की उपस्थिति किसी भी तरह से आउटपुट का अर्थ नहीं बदलती है)। जो हमें HTML मार्कअप और एक्सएचटीएमएल मार्कअप के बीच अंतर करने के लिए क्लीटस के उत्तर में वापस लाता है।

    innerHTML, और विस्तार jQuery.html() करके, आप डोम से एक तत्व की सामग्री को की एक HTML प्रतिनिधित्व देने के लिए बनाया गया था। यह आपको HTML मार्कअप देने के लिए डिज़ाइन किया गया है जो ब्राउज़र DOM में तत्व बनाने के लिए उपयोग किया जाता है। आप इसे "ठीक" नहीं कर सकते क्योंकि शुरुआत करने के लिए ठीक करने के लिए कुछ भी नहीं है। आपको कभी-कभी कभी-कभी डिबगिंग सत्र के अलावा किसी अन्य चीज़ के लिए किसी तत्व के innerHTML पर भरोसा करने से बचने की ज़रूरत है।

    यह भी देखें: Nested <p> tag auto-closing/opening

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