【问题标题】:addClass every nth每 n 次添加一次
【发布时间】:2010-11-18 14:50:21
【问题描述】:

我有一个想要以 3 种不同方式设置样式的元素列表。

我希望每个第三个列表项在整个列表中都具有相同的类。

例如:

<li class="A">Some Content</li>
<li class="B">Some Content</li>
<li class="C">Some Content</li>
<li class="A">Some Content</li>
<li class="B">Some Content</li>
<li class="C">Some Content</li>
<li class="A">Some Content</li>
<li class="B">Some Content</li>
<li class="C">Some Content</li>

我可以用 :odd/even 做 2,但是如何用 3 做呢?

【问题讨论】:

    标签: jquery css-selectors


    【解决方案1】:

    我推荐这样的东西:

    let i = 0;
    $("li").each(function() {
        i++;
        let newClass = 'A';
        if (i % 3 == 1) { newClass = 'B'; }
        if (i % 3 == 2) { newClass = 'C'; }
        $(this).addClass(newClass);
    });
    

    【讨论】:

    • 这不起作用...删除第一行并在 ....each(function(i)...中添加“i”...
    • 我修复了代码。还更新了它以使用 let 而不是全局范围 var。
    【解决方案2】:

    试试

    $("ul li:nth-child(3n+1)").addClass("A")
    $("ul li:nth-child(3n+2)").addClass("B")
    $("ul li:nth-child(3n)").addClass("C")
    

    随意合并它以使其更漂亮,但我想公开选择器。

    【讨论】:

    • 要使其成为可行的解决方案,请使用: $('ul li:nth-child(3n)').addClass('every-third-item-class');
    • @brownstone - 查看编辑,我对其进行了更改以解决他的全部担忧(尽管是长期的)
    • 谢谢马克。这正是我想要的。
    • @Marc - 老实说,我只是对缺少的单引号很挑剔 :) 尽管指出 +n 符号可以使答案完整。
    • @brownstone - 哎呀!好眼力,错过了那些。 @davebowker - 很高兴我能帮上忙
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 2015-04-16
    • 2019-02-03
    • 1970-01-01
    相关资源
    最近更新 更多