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 回答