2013-10-22 82 views
2

我试图编写一个循环遍历所有元素并向每个第三元素添加类的函数(1,4,7,10等),除非该元素具有'foo'...为每个第三元素添加类并排除具有X类的元素

是他们在我的循环中做到这一点的一种方式吗?

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

要排除一个类,你可以这样做'.addClass( '阿尔法')不是。( 'X');' –

+2

@KrisHollenbeck你可能要筛选_before_添加班,不是? – Mathletics

+0

是的,我只是举一个简单的例子来说明如何使用它。 –

回答

4
如何

一下:

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

Example

4

您可以使用nth-child选择:

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

See fiddle

+2

这是最好的办法,海事组织 - 'nth-child'选择器比'filter'简洁得多。 –

0

你可能寻找:not()选择:

试试这个:

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

它应用alpha类每3个元素,而忽略与类foo的元素。

jsFiddle

相关问题