2011-07-21 31 views
2

說我有一組元素$元素。假設他們都有一個名爲「金額」的數據attr。第一個數據量= 1,第二個等等。什麼是增加x的最簡單的方法,即所有的價值。 y解決方案是如何用jQuery改變一組元素的數據屬性?

$elements.each(function(){ 
    $(this).data('amount',$(this).data('amount')+=x); 
}); 

是否有更好的解決方案,而不使用each語句? 謝謝!

回答

3

jQuery的,如V1.6.2至少,不提供.data()接受的功能提供了一個過載。仍然使用each,但在它內,你可以做:

$(this).data().amount += x; 
+0

你可以嗎? ...... –

+0

@ŠimeVidas,是的,因爲'.data()'不帶參數返回jQuery用來存儲數據的原始對象。實際上,在jQuery文檔中建議您獲取/設置多個屬性。 –

+0

偉大的功能。從1.4開始就已經存在了 - 現在是我發現它的時候了:'''' –

1
$elements.data('amount', function() { 
    return $(this).data('amount') += x; 
}); 
+0

謝謝!是不是一樣的?無論如何,你仍然在使用「每一個」。沒有其他辦法嗎? – Ricardo

+2

我會做'$ .data(this,'amount')+ = x;'...來保存創建未使用的對象...所有你真正想要的就像'this [$。expando] .amount + = x'。你當然也可以在這樣的快速循環中做到這一點,只取決於這裏的性能問題。 –

+0

也許Tomalak更新了他的答案,但我確定沒有看到任何涉及到的「每個」。 –

相關問題