2011-12-25 9 views
5

मैं विधि data का उपयोग करने की कोशिश की (jQuery 1.7.1) इस कोड में:जोड़ना कस्टम डेटा का श्रेय Jquery में एक नया नोड काम के लिए नहीं है

var q = '<div class="form-error-marker"></div>'; 
var t = $(q).data('message', message).insertAfter(el); 

और यह काम नहीं करता।

ध्यान दें कि यह काम करता है:

var t = $(q).attr('data-message', message).insertAfter(el); 

पहले संस्करण का काम क्यों नहीं करता है?

संपादित करें: insertAfter सही ढंग से काम करता है और नए div el के बाद जोड़ा जाता है (जो एक तत्व जो मैं getElementById() समारोह से मिल का उदाहरण है, लम्बी कहानी कम मैं एक पुस्तकालय है कि मैं का विस्तार है)।

जब मैं कहता हूं कि यह काम नहीं करता है तो मेरा मतलब है कि विशेषता 'डेटा-संदेश' संग्रहित नहीं है।

+0

+1 मेरे पास एक ही समस्या है। – Bojangles

+1

"काम नहीं करता" का क्या अर्थ है? क्या 'el' में एक से अधिक तत्व होते हैं? – SLaks

+0

स्लाक्स: कृपया प्रश्न अपडेट देखें, कृपया। –

उत्तर

7

data का उपयोग करके इस नोड के लिए डेटा का मनमाना टुकड़ा सेट करता है; यह एक नया data- विशेषता नहीं जोड़ता है। बस attr समारोह के साथ विशेषता जोड़ने, और फिर पहुँच यह data

var q = $('<div class="form-error-marker"></div>').attr("data-message", message); 

अब यह इस तरह का उपयोग के साथ:

var message = q.data("message"); 

यहाँ एक fiddle

+0

"इस तरह के डेटा का उपयोग इस नोड के लिए डेटा का मनमाना टुकड़ा सेट करता है" मुझे यह वाक्य समझ में नहीं आता है। इसका क्या मतलब है? धन्यवाद! –

+0

@MartyIX - डेटा फ़ंक्शन के लिए दस्तावेज़ देखें http://api.jquery.com/data/ असल में, आप किसी भी डोम तत्व को डेटा ('कुंजी', 'मान') के साथ मनमाना डेटा संलग्न कर सकते हैं। आप इन मानों को .data ('key') कहकर पुनर्प्राप्त कर सकते हैं; JQuery 1.4.3 के अनुसार, .data ('key') न केवल .data ('key', 'value') के साथ सेट किए गए पहले सेट मानों को देखेगा, लेकिन HTML5 डेटा विशेषताओं को भी देखेंगे –

+0

यह नहीं है कि ' डेटा() 'का उपयोग किया जाना चाहिए। ओपी का कोड काम करता है। त्रुटि कहीं और थी या वह डेटा सेट करने के बाद 'attr ('data-message') 'तक पहुंचने का प्रयास कर रहा है, जो भी गलत है। – Popnoodles

2

है जब आप का उपयोग jQuery.data आप डॉन तत्व गुणों को नहीं बदले, इसके बजाय आपका डेटा $.cache में सहेजा गया है। तो यदि आप तत्व विशेषताओं को बदलना चाहते हैं तो jQuery.attr का उपयोग करें, जब आप कुछ जानकारी सहेजना चाहते हैं jQuery.data

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