2

在我的每个函数中,我从 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);
});
4

4 回答 4

1

在循环内部,每次都会发生计数。因此,您正在计算asdf第一个的全部,1,asdf第二个的全部,2,等等。您可以在循环中以其他方式存储计数,可能使用一个对象。然后,在循环之后,打印出计数。

您还可以聚合 nid,将类添加到父级,然后在循环聚合 nid 的第二个循环中,您可以计算有多少父级具有该特定类。

于 2013-05-22T04:07:56.350 回答
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);
})

演示:小提琴

于 2013-05-22T04:14:43.613 回答
0

您的脚本nidCount.numbers每次计算 DIV 时都会附加。你应该做的是这样的:

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]);
}
于 2013-05-22T04:12:40.267 回答
-1

尝试在两个类之间放置逗号..

 var nidCount = $(".parent,."+nid).length;
于 2013-05-22T04:04:00.273 回答