假设我有这样的结构:
<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,直到不再有。
答案 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。如果序列不在数组中,则添加序列值。