您能找到属性的不同值的数量吗? jQuery的?

时间:2013-03-11 15:40:05

标签: jquery html

假设我有这样的结构:

<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,直到不再有。

2 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:1)

您可以执行以下操作:

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

这将声明一个名为items的数组并循环每个div。如果序列不在数组中,则添加序列值。