0
jQuery('li.has-sub ul li:even').addClass('even');
jQuery('li.has-sub ul li:odd').addClass('odd');

这些类被添加到下拉菜单中。在一个下拉菜单中,类被正确添加,但另一个下拉菜单正在向even奇数元素添加类。我认为 jquery 可能会将所有列表项一起计算,这仍然无法解释为什么它会将 1 视为偶数。您可以在此 url 上看到问题:

黄色背景的菜单以漂流之旅开始。
http://bit.ly/XAEmh7

我尝试添加this以尝试使 jQuery 仅计算有问题的 ul 但没有运气。

4

2 回答 2

1

给定您的代码,jQuery 的行为正确:

jQuery('li.has-sub ul li:even').addClass('even');
jQuery('li.has-sub ul li:odd').addClass('odd');

如果您将其更改为:

jQuery('li.has-sub').each(function(){
   jQuery('ul li:even',this).addClass('even');
   jQuery('ul li:odd',this).addClass('odd');
});

应该管用。

于 2013-02-14T01:45:08.937 回答
0

:ODD/:EVEN 选择器是基于 0 的索引,因此它将突出显示第二、第四等行为奇数(索引 1,3 等)

此外,为了提高性能,您应该使用 .filter 如下:

$(document).ready(function() {
    $('li ul').filter(':even').addClass('even').end()
              .filter(':odd').addClass('odd');
});

请参考 jQuery 文档:http ://api.jquery.com/odd-selector/

于 2013-02-14T02:05:03.290 回答