hasClass中each()和addClass中的each()以某种方式不起作用

时间:2011-04-26 00:41:19

标签: jquery

另一个头颅,这一个!为什么下面的所有内容都工作,除了ONE 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');替换为$(this).addClass('active areyoukidding'); - 然后猜猜是什么,第二个类的添加没有问题。 active仍被忽略。以前有人遇到过这个吗?应用程序中没有其他地方可以在以后被覆盖;我已经在脚本中的许多其他地方添加了active个类。

1 个答案:

答案 0 :(得分:4)

你循环遍历每个元素六次......

  • 对于元素1000,请添加active,从其他所有内容中删除active
  • 对于元素1001,添加active,从其他所有内容中删除active(上面的撤消)
  • ...

因为元素1005是运行该逻辑的最后一个,所以只留下active