如何计算每个函数内元素的总量?

时间:2013-05-22 03:59:45

标签: jquery

在我的每个函数中,我从div中提取文本,将其作为类添加到父元素,然后我需要计算该类有多少元素。问题出现了,因为它在我的每个函数中,因为它递增计数而不是仅仅给我总量。

你可以在我的小提琴中看到输出是1231211而我想要的是3211.

My Fiddle

我的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);
});

4 个答案:

答案 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;