2011-07-21 22 views
2

私は要素$要素のセットを持っていると言います。彼らはすべて "量"という名前のデータattrを持っているとします。最初のものはdata-amount = 1、second second 2などです。そのすべてのxの値をインクリメントする最も簡単な方法は何ですか? y解は要素のセットのデータ属性をjQueryで変更するにはどうすればよいですか?

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

各ステートメントを使用せずに、より良い解決策がありますか? ありがとう!

答えて

3

jQueryのは、少なくともv1.6.2のような機能を受け入れ.data()ためのオーバーロードを提供していません。それでもeachを使用しますが、その中にあなたが行うことができます!

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

できますか? ...... –

+0

@ ime Vidas、yes。パラメータを持たない '.data()'は、jQueryがデータを格納するために使用する未加工オブジェクトを返します。実際には、複数のプロパティを取得/設定するためのjQueryドキュメントで推奨されています。 –

+0

素晴らしい機能。そして、それは1.4以来のことでした - 私はそれについて知る時間でした '):' ' –

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

おかげであることは同じではありませんか?とにかくあなたはまだ "each"を使っています。別の方法はありませんか? – Ricardo

+2

私は '$ .data(this、 'amount')+ = x;' ...そうでなければ未使用のオブジェクトの作成時に保存します。本当に必要なのは 'this [$。expando] .amount + = x'とにかく。もちろん、このような素早いループでも生のままにすることができます。ここでのパフォーマンスの重要性に依存します。 –

+0

おそらくTomalakさんは彼の答えを更新しましたが、確かに「それぞれ」は関係していません。 –

関連する問題