2010-04-22 17 views

cevap

23

Bu biraz tuhaf görünüyor, ama göre doğrudan değerini değiştirmek, böylece bir nesne olarak tüm veri alanlarını döndürür .data() docs:

$('#id').data('counter', 0); 

her iki seçenek çalışır:

veri alma
$('#id').data().counter++; 
$('#id').data()['counter'] += 5; 

beklenen değer iade.

alert($('#id').data('counter')); // 6 
+2

+1 Güzel yakalama! – Reigel

+1

Performanstan dolayı, verileri iki kez çağırmaktan kaçınmalısınız, bunun yerine şu adresi kullanın: http://stackoverflow.com/a/5656660/318765 – mgutt

2

, o yüzden sen değerini okumak ve geri yazmak zorunda olacağını düşünüyorum dahili jQuery veri yapısı. Eğer saklamak ne kontrol eğer

4
var data = parseInt ($.data("data-attr")) + 1; 

$.data("data-attr",data); 
8

Ya da, doğrudan ++ kullanarak nesne üzerinde değerlerini değiştirebilir böylece bir nesne başvurusu depolamak:

var $elem = $('<div>'); 
$elem.data('something', {value:1}); 
$elem.data('something').value++; 

console.log($elem.data('something').value); // 2 
+0

Teşekkürler! Yolum bu özel durumda çalışırken, sizinki daha fazla JavaScripty yöntemidir ve genel durum için doğru cevaptır. Referansı tutarsanız, sizinki daha kısa olabilir: "var v = {value: 1}; $ elem.data ('bir şey', v); /*...*/ v.value ++; ' – Kobi

0

Sadece, .Data() değeri saklamak da artırmak ve arka saklayın, bir değişken artan kadar basit

NumbeR veri değişkeninde bir numara ayarlandığını varsayalım.

var myNumber = $(selector).data('NumbeR'); 
$(selector).data('NumbeR', myNumber++)