2011-03-23 17 views
7

मैं एक HTML तत्व में click ईवेंट जोड़ सकता हूं और click ईवेंट अपडेट $(document).data(key,value) है।jQuery डेटा() और 'changeData' ईवेंट

यह तब $(document).bind('changeData', function() {...})) ट्रिगर करेगा। यह जानकर, एचटीएमएल तत्व को $(document).data() अपडेट करने का सबसे अच्छा तरीका क्या होगा?

उदाहरण के लिए:

$(document).bind('changeData', function { 
    // get the anchor that set $(document).data() 
}); 

$('a').click(function() { 
    $(document).data('key', 'value'); 
}); 
+1

मैं रॉबर्ट रॉस के दूसरे उत्तर का सुझाव दूंगा, लेकिन नीचे मेरा नोट देखेंगे। कृपया ध्यान दें, यह फ़ंक्शन दस्तावेज नहीं है इसलिए इसे निकट भविष्य में प्रयोगात्मक _AND_ शायद हटाया जाना चाहिए। एक नजर रखें [इस बग रिपोर्ट पर] (http://bugs.jquery.com/ticket/7877) – Scoobler

+0

ध्यान दिया, सिर के लिए धन्यवाद! – CoryDorning

+0

दरअसल, 'चेंजडाटा' ईवेंट अब बहिष्कृत है, जैसा कि @ टैंकोरस्माश के उत्तर द्वारा दर्शाया गया है। – Antti29

उत्तर

3
खैर क्लिक करें घटना से डेटा के लिए

:

$('#elementSelector').click(function(e){ 
    $(document).data(key, { 
     val: 'value', 
     target: e.target 
    }); 
}); 

फिर जब आप:

$('#elementSelector').click(function(e){ 
    $(document).data(key, val); 
}); 

$(document).bind('changeData', function(e){ 
    // e.target? 
}); 

यदि नहीं, संग्रहीत डेटा के भीतर लक्ष्य भंडारण की कोशिश परिवर्तन घटना है:

$(document).bind('changeData', function(e){ 
    var data = $(this).data(key); 
    var target = data.target; 
    var value = data.val; 
}); 
+0

मैंने पहले विकल्प की कोशिश की लेकिन e.target 'दस्तावेज़' देता है। हालांकि, मुझे आपके दूसरे विकल्प का विचार पसंद है। यह काम कर सकता है! – CoryDorning

+0

आप '$ (दस्तावेज़) .bind ('changeData', फ़ंक्शन (ई, कुंजी, मान) .....' 'key' सेट की गई कुंजी है, 'मान' सेट किया गया मान है। – Scoobler

+0

@Scoobler जो दिलचस्प है और काम करता है ... हालांकि, ई अभी भी 'दस्तावेज़' – CoryDorning

2

https://bugs.jquery.com/ticket/11718

jQuery के setData और changeData घटनाओं 1.8 के बाद से बहिष्कृत कर दिया गया और 1.9 में हटा दिया गया है। इसका मतलब है कि 2.X और 3.X में आप अब इन घटनाओं से जुड़ने में सक्षम नहीं हैं।

+0

यह प्रश्न पूछा गया था कि jQuery 1.6 जारी किया गया था ... – miken32

+0

निश्चित रूप से, लेकिन मैंने अभी यह पता लगाने की कोशिश की कि वह क्यों काम नहीं कर रहा था। गुगलिंग "jquery changeData" का उल्लेख नहीं किया जा रहा है, न ही 'jQuery.data()' और न ही ईवेंट दस्तावेज़ों के लिए दस्तावेज़ करता है। शायद यह सवाल उठाने के लायक है कि यह हमारे बाकी के समान संस्करण नहीं है। – TankorSmash

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