2013-01-23 15 views
5

मुझे डेटा विशेषता के लिए दो संभावित मानों के बीच टॉगल करने की आवश्यकता है।jQuery के साथ डेटा विशेषता को टॉगल कैसे करें?

यदि data-stateenabled के बराबर है तो मैं इसे disabled और इसके विपरीत बदलना चाहता हूं।

$('.sites .state').on('ajax:success', function(data, status, xhr) { 
    var site = $(this).parents('article').first(); 

    if (site.data('state') == 'enabled') { 
    site.attr('data-state', 'disabled'); 
    } else { 
    site.attr('data-state', 'enabled'); 
    } 
}); 

नोट: मैं डोम तत्व और to my knowledge बदलने के लिए की जरूरत है, मैं data उपयोग नहीं कर सकते कि (इसलिए attr का उपयोग) करने के लिए।

+4

तो समस्या क्या है? – VisioN

+0

@VisioN मेरा अपडेट देखें। मुझे डीओएम तत्व और मेरे ज्ञान में बदलने की जरूरत है, मैं ऐसा करने के लिए डेटा का उपयोग नहीं कर सकता (इसलिए एटीआर का उपयोग)। – Shpigford

उत्तर

3
site.attr('data-state', 'disabled'); 

site.data('state', 'disabled'); 

होना चाहिए एक तत्व data-<value> विशेषता डेटा संपत्ति प्रारंभ में इस्तेमाल किया जा सकता बना दिया जाता है, लेकिन उसके बाद आप डेटा लाने या संशोधित करने के लिए jQuery.data() विधि का उपयोग करने के लिए है।

जबकि $(el).data('<data-name>') मान देता है, $(el).data('<data-name>', value) डेटा मूल्य सेट करें।

अपडेट किया गया: अद्यतन आवश्यकता

$('div').attr('data-state', $('div').attr('data-state') == 'enabled' ? 'disabled' : 'enabled') 

Fiddle

+0

मुझे डीओएम तत्व और मेरे ज्ञान को बदलने की जरूरत है, मैं ऐसा करने के लिए 'डेटा' का उपयोग नहीं कर सकता (इसलिए 'attr' का उपयोग)। – Shpigford

+0

@Shpigford ने जवाब –

3
नहीं

वास्तव में यकीन है कि समस्या क्या है के आधार पर, लेकिन जब से तुम .data() उपयोग कर रहे हैं आप अपने अगर/किसी और में इसका उपयोग जारी रखना हो सकता है। .attr('data-state') इसे डीओएम तत्व पर ही सहेजता है (जब आप तत्व का निरीक्षण करते हैं तब दिखाई देता है), जबकि .data('state') के साथ यह अदृश्य और तेज़ भी है।

इसके अलावा, अगर आप त्रिगुट ऑपरेटर का उपयोग आप 1 छोटा लाइन में यह कर सकते हैं:

site.attr('data-state', site.data('state') === 'enabled' 
    ? 'disabled' 
    : 'enabled'); 
+0

अद्यतन किया है मुझे डीओएम तत्व और मेरे ज्ञान को बदलने की जरूरत है, मैं ऐसा करने के लिए डेटा का उपयोग नहीं कर सकता (इसलिए एटीआर का उपयोग)। – Shpigford

+0

आह ठीक है, इसे 'site.attr ('के साथ शुरू करने के लिए अपडेट किया गया है –

1
site.data('state', (site.data('state') == 'enabled' ? 'disabled' : 'enabled')) 
संबंधित मुद्दे