第一个元素后的替代颜色类

时间:2014-04-23 20:46:08

标签: jquery

我需要添加一个类,它将以不同方式设置列表项的样式。因为我在页面上有多个列表,我需要为每个列表重新设置样式,我决定查看每个列表。

$('ul.myList').each(function() {
    $('li:visible:even:not(.red, .green)').addClass('newStyle');
});

隐藏了部分项目,并且需要跳过每个列表中的前两项。

<ul>
    <li class="red">...</li>
    <li class="blue">...</li>
    <li>...</li>
    <li>...</li>
    <li class="hidden">...</li>
    <li>...</li>
</ul>

<ul>
    <li class="red">...</li>
    <li class="blue">...</li>
    <li class="hidden">...</li>
    <li class="hidden">...</li>
    <li>...</li>
    <li>...</li>
    <li>...</li>
    <li>...</li>
</ul>

出于某种原因,似乎奇数/偶数从一个列表继续到另一个列表。我错过了什么?

P.S。在这里,我使用.hidden提出一个想法,实际上有几种不同的隐藏方式。

1 个答案:

答案 0 :(得分:1)

li的选择器需要指定一个参考点,如果你想重启&#34;偶数/奇数。 您可以使用.find()选择后代元素。

$('ul.myList').each(function() {
    $(this).find('li:visible:even:not(.red, .green)').addClass('newStyle');
});

上述背景中的$(this)是指您当前正在ul

中进行迭代的特定.each()