2010-01-22 24 views
15

मुझे लगता है यह बहुत तरह आर्बिटरी विशेषता सेट करने के लिए सुविधाजनक:क्या यह गैर-मानक HTML विशेषताओं का उपयोग करने के लिए खराब अभ्यास माना जाता है?

<a stackoverflowId="123">...</a> 

और जावास्क्रिप्ट में:

var soId = $selectofA.attr('stackoverflowId'); //jQuery 

यह बिल्कुल एक अच्छा अभ्यास है? मुझे अभी तक इस में कोई समस्या नहीं है।

+0

हो सकता है कि अगर आप बताएं कि आप इस की जरूरत है हम समाधान का सुझाव दे सकते हैं के लिए। सख्त जवाब नहीं होना चाहिए, लेकिन हमेशा एक कोने का मामला होता है जो नियमों को तोड़ने की आवश्यकता होती है। –

+3

मुझे लगता है कि जिन मामलों में "नियम" तोड़ना ठीक है, वे सिर्फ कोने से अधिक हैं। – AnthonyWJones

+1

यह एक अकसर किये गए सवाल है: http://stackoverflow.com/search?q=custom+html+attribute – dreftymac

उत्तर

17

एचटीएमएल 5 में आप data-* विशेषता के साथ ऐसा कर सकते हैं:

<a id="myDiv" data-stackoverflowId="123">...</a> 

आप jQuery का उपयोग कर रहे हैं, आप भी jQuery Metadata Plugin जाँच करना चाहते हो सकता है। यह आपको कक्षा विशेषता में JSON मेटाडेटा को स्टोर और पार्स करने की अनुमति देगा, और आपका मार्कअप अभी भी मान्य होगा।

आप इस तरह अपने मेटाडाटा को सम्मिलित करने में सक्षम हो जाएगा:

<a class="your_class {stackoverflowId: '123'}">...</a> 

और यह निकालने इस प्रकार है:

var data = $selectofA.metadata(); 
+0

वास्तव में, मुझे HTML5 के बारे में बहुत अधिक परवाह नहीं है, लेकिन ब्राउज़र और ओवरहेड के साथ संगतता (इसलिए यह है कम प्लगइन का उपयोग करने के लिए बेहतर)। – user198729

+4

यदि आप वर्तमान ब्राउज़र के साथ संगत होना चाहते हैं, तो आप जो भी कर रहे हैं वह सभी लोकप्रिय ब्राउज़रों में काम करेगा ... हालांकि वैध मार्कअप का उपयोग करने से आप वर्तमान ** और भविष्य ** ब्राउज़र के साथ संगत रहने में मदद कर सकते हैं। –

+5

गंभीरता से, चोट के अपमान को जोड़कर मेटाडेटा दृष्टिकोण नहीं है? अब हमारे पास क्लास के लिए एक विशेषता मान है जो HTML और XHTML spec के अनुसार सीडीएटीए हो सकता है, लेकिन यह क्लासनाम या क्लासनामों की सूची से बहुत दूर है जो अधिकतर ब्राउज़र की अपेक्षा करेगा। मैं अपनी कुकीज़ को शर्त नहीं लगाऊंगा, यह कक्षा विशेषताओं के सामान्य व्यवहार में हस्तक्षेप नहीं करता है। –

7

आप data- विशेषताओं का उपयोग करते हैं, तो यह कम से कम मान्य एचटीएमएल 5 हो जाएगा। John Resig's blog post on the subject.

+4

+1 यह एचटीएमएल 5 समूह द्वारा प्रवेश है कि लोग वैसे भी ऐसा करते हैं, इसलिए हम इसे मानकीकृत भी कर सकते हैं। यह वर्तमान में क्लास एट्रिब्यूट को अधिभारित करने से बेहतर है क्योंकि लोग वर्तमान में करते हैं। –

+0

यह भी देखें: http://ajaxian.com/archives/custom-dom-attributes-vs-class-css- स्टाइल – dreftymac

1

मैं यह हर समय करता हूं, यह बहुत अच्छा काम करता है। इस तकनीक के साथ कभी भी किसी भी समस्या का सामना नहीं किया। मुझे लगता है कि कुछ जवाबों में सुझाए गए data- उपसर्ग का उपयोग करने के बावजूद यह एक बुरा विचार नहीं है।

यदि आप मानक अनुपालन के बारे में वास्तव में पागल हैं, तो आप HTML को एक मानक अनुपालन तरीके से लिख सकते हैं और एक स्क्रिप्ट में DOM पर गुण सेट कर सकते हैं। कम से कम, दस्तावेज़ मान्य होगा। लेकिन चूंकि शुद्ध नतीजा वही होगा, इसलिए आपको आईएमओ प्राकृतिक रूप से एचटीएमएल को विस्तारित करने के प्राकृतिक तरीके से उस दृष्टिकोण के पक्ष में काफी बीमार होना होगा क्योंकि यह आपके अनुरूप है।

एक और तरीका कस्टम डीटीडी लिखना है जो परिभाषित करता है कि आप किन एक्सटेंशन का उपयोग करना चाहते हैं। इस दृष्टिकोण को यहां विस्तार से वर्णित किया गया है: http://www.alistapart.com/articles/customdtd/

असल में यह दृष्टिकोण किसी स्थान पर एक्सएचटीएमएल डीटीडी की संशोधित प्रतिलिपि रखने और उस अनुकूलित डीटीडी को इंगित करने वाले एक डॉक्टरेट का उपयोग करने पर निर्भर करता है। आप उस संशोधित डीटीडी में अतिरिक्त विशेषता घोषणाओं को परिभाषित करेंगे, और स्पष्ट रूप से, डब्ल्यू 3 सी वैधकर्ता वास्तव में सत्यापित करने के लिए उस डीटीडी का उपयोग करेगा।

हालांकि, मैं सामान्य इंटरनेट सामना करने वाली वेबसाइटों के लिए इस दृष्टिकोण का उपयोग नहीं करता। मुझे डर है कि कुछ ब्राउज़र मेरे डीटी के खिलाफ दस्तावेज़ को सत्यापित करने की कोशिश कर रहे हैं, लेकिन फिर कहीं भी एक त्रुटि के साथ छोड़ दें। यह कस्टम डीटीडी तकनीक बहुत व्यापक नहीं है, मैं बस नियमित वेबपृष्ठों का मौका नहीं लेता।

1

आप jQuery (जो आपके उदाहरण था) आप डेटा विधि पर गौर करना चाहिए उपयोग कर रहे हैं:

http://api.jquery.com/jQuery.data/

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

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