each() 中的 each() 和 hasClass 中的 addClass 不知何故不起作用



这又是一个令人挠头的问题!为什么在下面的一切工作,除了一个addClass()行?

var arr = ['1000','1001','1002','1003','1004','1005'],
    allarr = 0;
$.each(arr, function(i, value) {
   $('#parent ul.list1 li a, #parent ul.list2 li a').each(function() {
      if($(this).hasClass('n-'+value)) {
         console.log('yes for: '+$(this).html()); //WORKS: it lists 6x "Something"
         allarr++; //WORKS: in the end, it says "6"
         $(this).addClass('active'); //DOES NOT WORK.
      } else {
         $(this).removeClass('active');
      }
   });
});
console.log('allarr: '+allarr);
HTML:

<ul class="list1">
   <li><a class="n-1000">Something</a></li>
   <li><a class="n-1001">Something</a></li>
   <li><a class="n-1003">Something</a></li>
   <li><a class="n-1005">Something</a></li>
</ul>
<ul class="list2">
   <li><a class="n-1002">Something</a></li>
   <li><a class="n-1004">Something</a></li>
   <li><a class="n-1006 active">Something that should have the active class REMOVED</a></li>
</ul>

奇怪,不是吗?我很感激你的帮助。谢谢!

更新:我只是用$(this).addClass('active areyoukidding');取代了$(this).addClass('active'); -猜猜看,第二类添加没有问题。active仍然被忽略。有人以前见过这个吗?在应用中没有其他地方可以重写这个;并且我已经在脚本的许多其他地方添加了active类。

每个元素循环六次…

  • 元素1000,添加active,删除active从其他所有
  • 对于1001元素,添加active,从其他所有元素中删除active(撤消上述)

由于元素1005是最后一个运行该逻辑的元素,因此只剩下active

最新更新