2012-08-14 14 views
11

क्या इस तत्व से सभी 3 डेटा मान प्राप्त करने का कोई तरीका है?क्या HTML5 में एकाधिक डेटा- {name} एट्रिब्यूट होना संभव है?

<div id="viewport" 
    data-requires='js/base/paths' 
    data-requires='js/base/dialog' 
    data-requires='js/base/notifier'> 

यह एक प्रोजेक्ट के लिए वास्तव में उपयोगी होगा जो मैं शुरू कर रहा हूं। इसके साथ मैं आवश्यक जेएस मॉड्यूल लोड कर सकता हूं और उन्हें डोम से जोड़ सकता हूं। मुझे पता है कि यह अजीब लग सकता है, लेकिन मैं यहां कुछ नया करने की कोशिश कर रहा हूं।

+2

आप शायद मतलब डेटा की आवश्यकता है। मुझे नहीं लगता कि आप ऐसा कर सकते हैं। उन्हें सब एक साथ क्यों नहीं रखा? डेटा-आवश्यकता = 'जेएस/बेस/पथ | जेएस/बेस/डायलॉग | जेएस/बेस/नोटिफायर' –

+0

मुझे लगता है कि मैं उन सभी को एक साथ रखने के साथ रहूंगा। 3 लिखने का एकमात्र कारण यह है कि टीम में शामिल होने वाले नए देवताओं के लिए यह सुंदर दिखाना है। –

+0

हाँ, –

उत्तर

3

यदि आप उन्हें किसी चीज़ से अलग करते हैं तो उन्हें एक-दूसरे में डाल सकते हैं और उन्हें एक ऐरे में डाल दें।

// oops here's plain JS 
var arrayData = document.getElementById('viewport').getAttribute('data-requries'); 
var arr = arrayData.split(','); 

for (i = 0; i < arr.length; i++) { 
    console.log(arr[i]); 
} 

http://jsfiddle.net/S7D2D/1/

16

अपने प्रश्न का उत्तर है कि HTML एक ही संपत्ति के कई उदाहरण का समर्थन नहीं करता है। सभी विशिष्ट तरीकों से आप उस विशेषता को पुनर्प्राप्त कर सकते हैं केवल तीन में से एक को पुनर्प्राप्त करेंगे।

इस समस्या को हल करने का सामान्य तरीका विशेषता के एक उदाहरण का उपयोग करना और मान के रूप में कई पथ डालना है। पथों के लिए, वे आम तौर पर अर्ध-कॉलन से अलग होते हैं।

<div id="viewport" data-requires='js/base/paths;js/base/dialog;js/base/notifier'> 

और फिर, सरणी में बहु-मूल्यवान विशेषता को तोड़ने के लिए कोड का उपयोग करें।

var requiredPaths = document.getElementById("viewport").getAttribute("data-requires").split(";"); 
+0

ऐसा करने में सक्षम होना अच्छा होगा यह विधि फाउंडेशन ड्रॉपडाउन के साथ काम करता है ताकि इस तरह के कई डेटा-विकल्प की अनुमति हो सके: 'data-options =" ​​is_hover: true; align: right "'। धन्यवाद, क्योंकि मुझे यह नहीं मिला कि यह कहीं और कैसे करें। – lwalden

7

आप data- विशेषताओं के भीतर अधिक जटिल संरचनाओं का उपयोग कर सकते हैं।

इसके बजाय इस बात का

:

<div id="viewport" 
data-requires='js/base/paths' 
data-requires='js/base/dialog' 
data-requires='js/base/notifier'> 

आप यह कर सकते हैं:

<div id="viewport" 
data-requires='["js/base/paths", "js/base/dialog", "js/base/notifier"]'> 
</div> 

सबूत jQuery.data() का उपयोग कर (जो सिर्फ सरणी इस तरह से पुन: प्राप्त करता: jQuery('#viewport').data('requires')) यहाँ है: http://jsfiddle.net/3StZs/

+0

उत्सुकता है कि क्या कोई ब्राउज़र इस पर चकित होगा ... –

+0

@rohit_wason: आप इसके बारे में चिंतित क्यों हैं? यह तकनीक अब वर्षों से आसपास है, और सबसे अधिक संभावना है कि यहां तक ​​कि अपमानित ब्राउज़र भी समर्थित हैं (हालांकि सबसे पहले, उन्हें अब उपयोग नहीं किया जाना चाहिए, और दूसरी बात, jQuery संस्करण को उनका समर्थन करने की आवश्यकता होगी)। इसके बारे में आपके पास कोई विशिष्ट चिंता है? jQuery बहुत पुराने ब्राउज़र के साथ बहुत संगत प्रतीत होता है, अगर आपका बहुत पुराना है, तो आपको इसका समर्थन करने के लिए jQuery के बहुत पुराने संस्करण का उपयोग करने की आवश्यकता हो सकती है। – Tadeck

+0

मेरी मूल टिप्पणी वास्तव में कई विशेषताओं का उपयोग करने के बारे में थी। मुझे नहीं लगता कि मैंने पूरी तरह से सवाल पढ़ा है। मुझे अब दिख गया। –

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