1

次のような構造があるとします。

<div class='collection'>
    <div class='item' seq=1>foo</div>
    <div class='item' seq=2>bar</div>
    <div class='item' seq=2>baz</div>
    <div class='item' seq=2>asd</div>
    <div class='item' seq=3>que</div>
    <div class='item' seq=3>bletch</div>
</div>

seq=1、seq=2 などでアイテムの数を取得するのは簡単です。しかし、seq の異なる値の数をどのように見つけますか?また、それらの値は何でしょうか? seqの値は1 から始まり、それ以上なくなるまで 1 ずつ増加すると想定するのがおそらく安全です。

4

2 に答える 2

5

属性値とそのカウントをオブジェクトに蓄積できます。

var totals = {};
$(".collection > .item").each(function() {
    var seq = $(this).attr("seq");
    var total = totals[seq] || 0;
    totals[seq] = total + 1;
});

上記のコードが実行されると、次のようなオブジェクトが作成されます。

{
    "1": 1,
    "2": 3,
    "3": 2
}
于 2013-03-11T15:45:34.550 に答える
1

次のようなことができます。

var items = [];
$(".collection > .item").each(function() {
   var sequence = $(this).attr("seq");
    if (jQuery.inArray(sequence, items) == -1) {
         items.push(sequence);
    }
});

これは、items という配列を宣言し、各 div をループします。シーケンスが配列にない場合は、シーケンス値を追加します。

于 2013-03-11T15:41:42.713 に答える