jQuery:not()在表行上有多个类

时间:2009-10-27 18:28:27

标签: jquery jquery-selectors

所以基本上我使用jQuery来交替行颜色,方法是选择与要着色的表相关联的所有tr标签,然后相应地着色它们。然而,在某些时候我不希望某个tr被着色,并且在这些情况下,交替着色应该跳过那些特定的表行。为此,我有一个名为“rowSkip”的类,它适用于应该跳过颜色化的所有行。

几个月来,我一直在努力工作,这是一种享受......然而,一直存在一个问题。有些情况下,我需要将多个类应用于表行,但也不希望它着色。在这种情况下,jQuery的类选择器似乎有问题 - 或者我在这里缺少一些简单的东西......

EG:

<tr class="rowSkip"> - &gt;工作正常。

<tr class="rowSkip strong someclass1 someclass2"> - &gt;不起作用(尽管存在“rowSkip”类,仍然会变色)

有没有人知道为什么会出现这种情况以及我如何解决这个问题,而不是完全抓住类attr,按空格进行拆分,然后迭代它并检查rowSkip的存在? / p>

代码如下:

$("Table.alternate tr:not(.rowSkip)").each(function() {
//if(!$(this).hasClass("rowSkip")) { //Also tried this, and several other renditions to no avail.

   $(this).addClass(i++ % 2 == 0 ? 'rowOff1' : 'rowOff2');
//}
});

谢谢, 标记

2 个答案:

答案 0 :(得分:4)

试试这个:

$("Table.alternate tr:not('[class*=rowSkip]')").each

如果你的班级总是以rowSkip开始,那么你可以这样做

$("Table.alternate tr:not('[class^=rowSkip]')").each //looks for class names that starts with rowSkip

答案 1 :(得分:0)

我建议你看看这个jQuery选择器的构建:odd和:even。那么你有几种方法:

$('table.alternating tr:odd td').css('background-color','#eee');

或使用课程:

$('table.alternating tr:odd').addClass('odd');

和一些CSS:

tr.odd td { background-color: #eee }