2009-04-22 8 views
6

मैंने आमतौर पर जावास्क्रिप्ट लिखते समय डोम-केवल विशेषताओं के साथ चिपकने का प्रयास किया है। अब जब मैंने प्रोटोटाइप से jQuery पर स्विच किया है, तो मैं विभिन्न डीओएम तत्वों में अपनी विशेषताओं को जोड़ने से कुछ गंभीर लाभ प्राप्त कर सकता हूं, ज्यादातर AJAX अनुरोधों को संभालने के लिए एक बहुत ही पठनीय कोडिंग सम्मेलन स्थापित करने में सक्षम होने के दायरे में।गैर- (एक्स) एचटीएमएल विशेषताएँ ... कोई नुकसान?

एक छोटी उदाहरण के रूप में, इसका मतलब है मैं

<div type="book" app_id="13"> 
    <a href="#" action="delete">delete</a> 
</div> 

की तरह बातें करते हैं और फिर मैं, एक action विशेषता के साथ सभी <a> टैग लगाने के लिए कोड सेट अप एक type और app_id, और फिर साथ एक माता पिता मिल सकता है सीआरयूडी ऑपरेशन करें ... मुझे बिना अतिरिक्त कोड लिखना है।

क्या कोई नुकसान है (कड़ाई से एक्सएचटीएमएल शिकायत नहीं होने के अलावा) जिसे मुझे देखना चाहिए, और/या किसी भी अच्छी आदतें जिन्हें मुझे अनुकरण करना चाहिए? अपना खुद का विशेषता नामस्थान स्थापित करने का एक मानक तरीका कैसा है?

उत्तर

4

Can I store custom attributes in HTML DOM like a database record?

नई एचटीएमएल 5 डेटा गुण हो सकता है आप के लिए क्या देख रहे हैं।

http://ejohn.org/blog/html-5-data-attributes/

http://dev.w3.org/html5/spec/Overview.html#custom

मैं जानता हूँ कि यह नहीं "एक्सएचटीएमएल" है, लेकिन कम से कम यह कुछ मानक का हिस्सा है;)

6

this question के अनुसार, एक्सएचटीएमएल 1.0 में एक्सएमएल नेमस्पेस का उपयोग करना अमान्य है। उसी नामस्थान में अपने स्वयं के गुण जोड़ना मेरे लिए बुरा लगता है, क्योंकि वे निश्चित रूप से अमान्य हैं, यहां तक ​​कि जहां तक ​​एक्सएमएल जाता है।

क्या मैं यह कर रहा था, मुझे class और rel विशेषताओं से मेरा लाभ मिलेगा। उदाहरण के लिए:

<div class="book" id="book_13"> 
    <a href="http://example.com/url/to/delete/non/ajaxily" class="delete">delete</a> 
</div> 
+0

दुर्भाग्य से, आप तो विभिन्न वर्गों का उपयोग करने के दृश्य प्रतिक्रिया देने के लिए चाहते हैं (मान , एक चेक-आउट बनाम गैर-चेक-आउट पुस्तक के लिए अलग-अलग पृष्ठभूमि), आपको या तो एक और रैपर तत्व की आवश्यकता है, या कस्टम-विशेषता मार्ग के साथ जाने की आवश्यकता है। –

+2

@ डॉन - नहीं, आप नहीं करते हैं। आप किसी भी तत्व पर एकाधिक कक्षाओं का उपयोग कर सकते हैं, बस उन्हें रिक्त स्थान से अलग करें। उदाहरण के लिए "चेक-आउट बुक देय-कल" पूरी तरह मान्य है –

+0

@ मार्क - आप सही हैं लेकिन जिस तरह से आपको कहना है कि पार्सिंग की आवश्यकता है जो बेहतर नहीं है। मैं कस्टम विशेषता पथ चुनूंगा (और वास्तव में चुना है)। – BYK

0

मुझे इस दृष्टिकोण के साथ कुछ भी गलत नहीं लगता है। दरअसल मैंने इस के कई उदाहरण देखे हैं और मैंने स्वयं कई अनुप्रयोगों पर इस दृष्टिकोण का उपयोग किया है और सत्यापन मुद्दे को छोड़कर किसी भी बाधा का सामना नहीं किया है। तो मुझे लगता है कि आप जाने के लिए स्वतंत्र हैं =)

+0

आपको निश्चित रूप से किसी तत्व के नाम का उपयोग करके गलती से देखना होगा कि एक या अधिक ब्राउज़र कार्य करेंगे। अधिकतर ब्राउज़र कुछ विशेषताओं को स्वीकार करते हैं भले ही वे आवश्यक रूप से मान्य नहीं हैं (विशेष रूप से IE)। – Travis

0

मुझे अमान्य विशेषताओं को जोड़ने के साथ कुछ भी गलत नहीं दिखता है जब तक कि कोई व्यक्ति किसी अज्ञात ब्राउज़र का उपयोग नहीं कर रहा है जो सुपर सख्त है और मानक पर कुछ भी विफल रहता है। ऐसा हो सकता है, मुझे लगता है ... लेकिन यह संदिग्ध है ...

एक अच्छा विकल्प, हालांकि, jQuery Metadata Plugin का उपयोग आसानी से सुलभ कुंजी-> एक विशेषता के अंदर से मूल्य जोड़े को स्टोर करने के लिए किया जाएगा।

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