在我的每个函数中,我从div中提取文本,将其作为类添加到父元素,然后我需要计算该类有多少元素。问题出现了,因为它在我的每个函数中,因为它递增计数而不是仅仅给我总量。
你可以在我的小提琴中看到输出是1231211而我想要的是3211.
我的HTML
<div class="parent">
<div class="nid">asdf</div>
</div>
<div class="parent">
<div class="nid">asdf</div>
</div>
<div class="parent">
<div class="nid">asdf</div>
</div>
<div class="parent">
<div class="nid">qwerty</div>
</div>
<div class="parent">
<div class="nid">qwerty</div>
</div>
<div class="parent">
<div class="nid">zxcv</div>
</div>
<div class="parent">
<div class="nid">ghjk</div>
</div>
<div class="numbers">
</div>
我的jQuery
$(".nid").each(function() {
var nid = $(this).text();
$(this).parent().addClass(nid);
var nidCount = $(".parent."+nid).length;
$('.numbers').append(nidCount);
});
答案 0 :(得分:1)
在循环内部,计数每次都在发生。所以,你要计算第一个的所有asdf
,第一个的所有asdf
,2,等等。你可以在循环中以其他方式存储计数,可能还有一个对象。然后,在循环之后,打印出计数。
您还可以聚合nids,将类添加到父级,然后在第二个循环中循环聚合nids,您可以计算有多少父级具有该特定类。
答案 1 :(得分:1)
尝试
var counter = {};
$(".nid").each(function() {
var text = $(this).text();
var count = counter[text] || 0;
counter[text] = count + 1;
});
$.each(counter, function(key, value){
$('.numbers').append(value);
})
演示:Fiddle
答案 2 :(得分:0)
每次计算DIV时,您的脚本都会将nidCount
追加到.numbers
。你应该做的是这样的事情:
var numbers = {};
$(".nid").each(function() {
var nid = $(this).text();
$(this).parent().addClass(nid);
var nidCount = $(".parent."+nid).length;
numbers[nid] = nidCount;
});
for (var key in numbers) {
$('.numbers').append(numbers[key]);
}
答案 3 :(得分:-1)
尝试在两个类之间放置一个逗号..
var nidCount = $(".parent,."+nid).length;