2011-06-28 10 views
10

मैं IE8 के साथ परीक्षण कर रहा हूं। मैंने अभी jQuery को v1.5.2 से v1.6.1 में अपग्रेड किया है और अब डेटा विधि काम नहीं कर रही है।jQuery .data() डेटा पुनर्प्राप्त नहीं कर रहा है- *

इस तरह पंक्ति देखो:

<tr class="ui-widget-content alt" nodeIndex="2" data-DocAttributeFieldType="TextBox" data-DocClassAttributeFieldId="60777" jQuery16106588245076914028="66"> 

इस काम करता है:

$("#docClassAttributeFields tbody tr:first").attr("data-DocClassAttributeFieldId"); 

यह काम नहीं करता:

$("#docClassAttributeFields tbody tr:first").data("DocClassAttributeFieldId"); 

उसमें एक बग है?

यहां एक उदाहरण है। आप मामले को दूर करने की कोशिश की, पर देखने के - में 1.5.2 और उसके बाद 1.6 के साथ इसे चला कर देख सकते हैं कि वे कैसे अलग तरह से कार्य ... http://jsfiddle.net/5hbKX/

उत्तर

16

docs(मैं परिवर्तन 1.6 में वर्णित संदेह से इसके लिए जिम्मेदार है lastValue उदाहरण):

एचटीएमएल 5 डेटा- गुण

jQuery 1.4.3 HTML 5 data- attributes स्वचालित रूप से लिए jQuery के डेटा हासिल कर लिया जाएगा के रूप में वस्तु। एम्बेडेड डैश के साथ विशेषता W3C HTML5 specification के अनुरूप jQuery 1.6 में बदल गई थी। निम्नलिखित jQuery कोड होगा काम के

<div data-role="page" data-last-value="43" data-hidden="true" data-options='{"name":"John"}'></div> 

सभी:

उदाहरण के लिए, निम्नलिखित एचटीएमएल दिया।

$("div").data("role") === "page"; 
$("div").data("lastValue") === 43; 
$("div").data("hidden") === true; 
$("div").data("options").name === "John"; 

हर प्रयास (इस बूलियन्स, संख्या, वस्तुओं, सरणियों, और अशक्त भी शामिल है) अन्यथा यह स्ट्रिंग के रूप छोड़ दिया है एक JavaScript मान को स्ट्रिंग परिवर्तित करने के लिए किया जाता है। किसी भी के बिना किसी स्ट्रिंग के रूप में मान के विशेषता को पुनर्प्राप्त करने के लिए, attr() विधि का उपयोग करें। जब डेटा विशेषता ऑब्जेक्ट ('{') से शुरू होती है या सरणी ('[') से शुरू होती है तो jQuery.parseJSON स्ट्रिंग को पार्स करने के लिए उपयोग की जाती है; इसे उद्धृत संपत्ति नामों सहित वैध JSON सिंटैक्स का पालन करना होगा। डेटा-गुण पहली बार डेटा प्रॉपर्टी तक पहुंचे हैं और फिर एक्सेस या उत्परिवर्तित नहीं हैं (सभी डेटा मान को आंतरिक रूप से jQuery में संग्रहीत किया जाता है)।

ऊपर HTML5 specification से:

एक कस्टम डेटा का श्रेय, कोई नाम स्थान जिसका नाम स्ट्रिंग "डेटा-" के साथ शुरू होता है में एक विशेषता है कम से कम एक चरित्र पर है हाइफ़न के बाद, एक्सएमएल-संगत है, और इसमें श्रेणी U + 0041 से U + 005A (लैटिन कैपिटल पत्र ए से लैटिन) में कोई वर्ण नहीं है कैपिटल पत्र जेड)।

सभी HTML दस्तावेज़ में HTML तत्वों पर जिम्मेदार बताते हैं स्वचालित रूप से ASCII-लोवरकेस मिलता है, तो ASCII बड़े अक्षरों पर प्रतिबंध ऐसे दस्तावेजों को प्रभावित नहीं करता।

+0

मुझे लगता है कि यह है। लोअरकेस में बदलना इसे ठीक करता है: http://jsfiddle.net/5hbKX/1/ उस तरह की बदबू आ रही है, यह बहुत कम पठनीय है: .डेटा ("docclassattributefieldid") बनाम .डेटा ("DocClassAttributeFieldId") – Homer

+0

दिलचस्प साइड नोट, यदि आप फायरबग (एफएफ) और फायरबग-लाइट (आईई) में स्रोत देखते हैं तो डेटा- * कम हो गया है, लेकिन इसे आईई डेवलपर टूल्स में देखकर यह मिश्रित मामला है। – Homer

+6

यदि कैप्टियल अक्षरों की अनुमति नहीं है, तो इसके बजाय उपयोग-हाइफ़न-टू-कॉन्सटेनेट-शब्द-का उपयोग करें। – Betamos

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