2

6つのリストアイテムがあります

$('.favorite-tag-group li').each(function(){
  console.log("hi"); 
});

ただし、このコードはコンソールに「hi」を24回表示しています。

私が考えることができる唯一のことは、それがバグアウトを引き起こしているかもしれないということです。なぜなら、私のリストアイテムはすべて同じリストにあるからです。

たとえば、.favorite-tag-groupは常にulを含むdivです。場合によっては、そのulには1つのliしかありません。時々それは2を持っているかもしれません。

これがどのように見えるかのサンプルです

div.favorite-tag-group
  ul
    li
    li
    li 
div.favorite-tag-group
  ul
    li
div.favorite-tag-group
  ul
    li
div.favorite-tag-group
  ul
    li
    li

私がやろうとしているのは、重複を削除できるように.each()liを実行することだけです; /

いくつかの実際のhtml:

<div class="favorite-tag-group">
  <h4>gobty</h4>

  <ul class="resources led-view">
    <li class="clearfix r-tutorial" data-id="22">

    </li>
  </ul>
</div>
<div class="favorite-tag-group">
  <h4>javascript</h4>

  <ul class="resources led-view">
    <li class="clearfix r-tutorial" data-id="24">

    </li>
  </ul>
</div>
<div class="favorite-tag-group">
  <h4>macvim</h4>

  <ul class="resources led-view">
    <li class="clearfix r-tool" data-id="21">

    </li>
  </ul>
</div>  

これが実際の関数です。.each()をコンソールに直接貼り付けると機能しますが、この関数内では機能しません。

 // collapse tags functionality
    $('.collapse-tags').click(function(e){
        e.preventDefault();
        $('.favorites-helpers, .favorite-tag-group h4').slideUp(200, function(){
            var seen = {};
            $('.favorite-tag-group li').each(function(){
                //console.log("hi");
                var currentId = $(this).data('id');
                if (seen[currentId]) {
                    $(this).slideUp(200);
                } else {
                    seen[currentId] = true;
                }
            });
        });
    });
4

2 に答える 2