2009-08-20 10 views
41

संभावित डुप्लिकेट:
Custom attributes - Yay or nay?
Non-Standard Attributes on HTML Tags. Good Thing? Bad Thing? Your Thoughts?क्या एचटीएमएल तत्वों में अपनी खुद की विशेषताएं जोड़ना ठीक है?

वर्तमान अधिगम परियोजना में मैं पर काम कर रहा हूँ, मैं एक विशेषता जिसका मूल्य एक नंबर हो जाएगा जोड़ने की जरूरत है। पहले तो मुझे इस उद्देश्य के लिए "आईडी" का उपयोग कर के बारे में सोचा लेकिन an answer बताता है कि यह अच्छी बात है कि ऐसा करने के लिए नहीं है।

क्या यह ठीक है अगर मैं अपने ही विशेषता बनाने के लिए, यह करने के लिए इस तरह के "12" के रूप में "messid" और आवंटित एक अंकीय मान, "6" आदि का कहना है?

यही कारण है कि मैं ऐसा करना चाहता हूं ताकि अगर आप इसे पूरी तरह से गलत कर रहे हैं तो आप मुझे सही कर सकते हैं: मुझे इस जावास्क्रिप्ट (jQuery का उपयोग करके) में इस नंबर तक पहुंचने की आवश्यकता है। बस विशेषता के मान ले जा रहा है आसान है, लेकिन "M12" या "M6" इस तरह की स्ट्रिंग से संख्यात्मक मान निकालने एक दर्द है। (मैं जावास्क्रिप्ट दुनिया में अभी शुरुआत कर रहा हूँ।)

उत्तर

90

इस बारे में ज्यादा चर्चा हुई है:

दिन के अंत में, मैं शिविर का मानना ​​है कि डेटा गुण हैं पर हूँ जाने का सबसे अच्छा तरीका है। नाम विवादों से बचने के लिए उन्हें HTML5 में पेश किया जा रहा है। अनिवार्य रूप से, अगर आप कुछ भी डाटा स्टोर करना चाहते हैं तो आप सिर्फ संबंधित विशेषता नाम पर "डेटा-" पहले जोड़ें:

<div class="user" data-userid="5"></div> 

पूरी बात करने के लिए केवल चोर तो है कि आपके XHTML मान्य नहीं होगा, लेकिन मैं ईमानदारी से डॉन उस सामान के बारे में परवाह नहीं है। (यह सही है, मैं यह कहा)

+9

+1। मैं पूरी तरह से सहमत हूं कि यह दृष्टिकोण एक कामकाजी समाधान है जो कार्यान्वित करना आसान है और कुछ भी तोड़ता नहीं है। आदर्शवाद पर व्यवहारवाद भी मेरी पुस्तक में जीतता है। – AnthonyWJones

+1

मैं इसके साथ जाऊंगा, क्योंकि यह आज काम करता है और चूंकि यह एचटीएमएल 5 विनिर्देशों में है, यह शायद अब से 10 साल काम करेगा। यह डेटा को अन्य मानों से भी स्वतंत्र रखता है (जैसे इसे 'आईडी' विशेषता में रखते हुए, जिसे बाद में अन्य कारणों में बदलना पड़ सकता है) जबकि इसे तत्व पर रखते हुए भी। और हां, एचटीएमएल सत्यापन त्रुटियों को समस्याओं के लिए सिफारिशों/पॉइंटर्स के रूप में देखा जाना चाहिए, त्रुटियों को ठीक नहीं करना चाहिए (और उस निशान पर होने पर, मैं जेएसलिंट के लिए बस कुछ चीजों को हल करने के लिए कहूंगा =) – Blixt

+6

"यह सही है, मैंने कहा "- पहला कदम इसे स्वीकार कर रहा है। ;) – nickf

-8

नहीं - it's not

+0

घृणा करने वाले - मैं गलत क्या कहा? क्या यह ठीक है अगर साइट डब्ल्यू 3 सत्यापन पास नहीं करती है? –

+1

मैंने इसे केवल * वोट दिया क्योंकि मुझे लगता है कि यह एक वास्तविक जवाब है; हालांकि मुझे लगता है कि डाउन-वोट स्पष्टीकरण की कमी के कारण थे। और नहीं, मुझे नहीं लगता कि सिर्फ एक लिंक प्रदान करना पर्याप्त है। मुझे विश्वास है कि आपको कम से कम उस पेज को संक्षेप में सारांशित करना चाहिए, भले ही आप * स्वयं * को समझाने का विकल्प न चुनें। –

+1

@ अरनिस: हो सकता है, हो सकता है, लेकिन आपके "उत्तर" में उस छोटे से पाठ को शामिल करने के लिए आपके लिए कितना मुश्किल होगा? – AnthonyWJones

8

एचटीएमएल 5 में आप किसी विशेषता data- के साथ शुरू जोड़ने के लिए है, तो उदाहरण के लिए अनुमति हो <div data-messid="12"> ठीक है।

एचटीएमएल 4 और एक्सएचटीएमएल 1 मान्य नहीं होगा यदि आप अपनी खुद की विशेषता जोड़ते हैं, लेकिन इसके अलावा यदि आप विशेषता नाम को अद्वितीय चुनते हैं तो कुछ भी बुरा नहीं होगा (इसलिए यह किसी भी मौजूदा या भविष्य के HTML विशेषता के साथ संघर्ष नहीं करेगा)।

2

मैं कस्टम विशेषताओं का उपयोग करें, और जब से वे सभी ब्राउज़रों मैं जाँच के द्वारा समर्थित हैं मुझे लगता है कि यह उनके उपयोग करने के लिए बुरा नहीं है। आप कुछ आईई हैक के साथ एचटीएमएल 5 अनुकरण करने के लिए कस्टम एचटीएमएल टैग का भी उपयोग कर सकते हैं, तो अगर किसी भी हैक की आवश्यकता नहीं है तो विशेषताओं का उपयोग क्यों नहीं करें?

वैसे भी, आप समान चर्चा यहाँ पढ़ सकते हैं: Custom attributes - Yea or nay?

1

यह एक निश्चित जवाब नहीं है, लेकिन अतीत में यह करने के लिए मैं इस न केवल अच्छी तरह से काम करता है कह सकते हैं पड़ा रहा है, यह पार ब्राउज़र है अनुकूल।

5

आपकी जानकारी के लिए, आप आसानी से M12 या M6 इस तरह की स्ट्रिंग से एक आईडी निकाल सकते हैं, मैं इसे इस तरह करना होगा:

//name the IDs m_12, m_3 etc 
var number = $('#someElement').attr('id').split('_')[1]; 

या अगर कहते हैं, आप में संख्या के साथ लिंक का एक समूह है आईडी के रूप में ऊपर, और सभी लिंक clickMe वर्ग है:

$('a.clickMe').click(function() { 
    alert($(this).attr('id').split('_')[1]); 
}); 
+0

इस तरह मैं आमतौर पर कुछ करता हूं यदि मेरे पास बस एक आईडी है जिसे मैं पुनर्प्राप्त करना चाहता हूं, लेकिन कभी-कभी उससे भी अधिक होता है। –

+0

मेरी इच्छा है कि मैं केवल एक बार ऊपर उठ सकता हूं :) – codelame

1

jQuery का उपयोग कर आप .data का उपयोग एक तत्व के खिलाफ कस्टम जानकारी स्टोर करने के लिए कर सकते हैं।

कस्टम विशेषताओं का नकारात्मक पहलू हैं:

  • IE6 अतिरिक्त वस्तुओं बनाता है कस्टम स्टोर करने के लिए 'expando' का श्रेय इन प्रवृत्ति विशेष रूप से लीक करने के लिए वे स्क्रिप्ट के माध्यम से बनाई गई हैं, तो की है।

  • सत्यापन संबंधी समस्याएं

+0

मैं एएसपी का उपयोग कर रहा हूं।नेट एमवीसी और मैं एचटीएमएल सहायक विधियों के htmlAttribs पैरामीटर का उपयोग कर कस्टम विशेषता "डेटा-मैसिड" जोड़ने की कोशिश कर रहा हूं: नया {@class = "mcf", data-dd = HTML.AttributeEncode (m.ID)}। लेकिन यह काम नहीं करता (वाक्यविन्यास समस्या)। मुझे लगता है कि आप एएसपी.नेट एमवीसी टैग में सक्रिय हैं, तो कृपया आप मेरी मदद कर सकते हैं कि इसे कैसे करें? – Hemant

+0

निश्चित रूप से - एक asp.net mvc टैग – redsquare

+0

के साथ एक और प्रश्न पूछें, हालांकि आपने जो सही देखा है – redsquare

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