2

我正在尝试编写一个循环遍历我所有元素的函数,并向每个第三个元素(1、4、7、10 等)添加一个类,除非该元素具有类“foo”...

他们是在我的循环中执行此操作的方法吗?

$('.container12 > .grid_12 > .grid_4').filter(function (index) { 
   return index % 3 === 0;
}).addClass("alpha");
4

3 回答 3

4

您可以使用nth-child选择器:

$('.container12 > .grid_12 > .grid_4:nth-child(3n+1):not(\'.foo\')')
.addClass("alpha");

见小提琴

于 2013-10-22T14:37:34.667 回答
4

这个怎么样:

$('.container12 > .grid_12 > .grid_4').filter(function (index) { 
   return !$(this).hasClass('x') && index % 3 === 0;
}).addClass("alpha");

例子

于 2013-10-22T14:39:11.140 回答
0

您可能正在寻找:not()选择器:

试试这个:

$(".container12 > .grid_12 > .grid_4 li:not('.foo')")
    .filter(function (index) { 
       return index % 3 === 0;
    })
    .addClass("alpha");

它将alphaclass 应用于每个 3rd 元素,忽略带有 class 的元素foo

jsFiddle

于 2013-10-22T14:42:24.790 回答