另一个头颅,这一个!为什么下面的所有内容都工作,除了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
个类。
答案 0 :(得分:4)
你循环遍历每个元素六次......
1000
,请添加active
,从其他所有内容中删除active
。1001
,添加active
,从其他所有内容中删除active
(上面的撤消)因为元素1005
是运行该逻辑的最后一个,所以只留下active