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

試す

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 に答える
1

ループ内では、毎回カウントが行われています。したがって、asdf最初のすべて、1、2 番目のすべてasdf、2 などをカウントしています。おそらくオブジェクトを使用して、ループ内の別の方法でカウントを保存できます。次に、ループの後、カウントを出力します。

nid を集約し、クラスを親に追加してから、集約 nid をループする 2 番目のループで、その特定のクラスを持つ親の数をカウントすることもできます。

于 2013-05-22T04:07:56.350 に答える
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]);
}
于 2013-05-22T04:12:40.267 に答える
-1

両方のクラスの間にコンマを入れてみてください..

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