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