我正在尝试选择tr
内的所有table
元素,但第三个和第四个除外。我设法使用:
#table tr:not(:nth-child(3)):not(:nth-child(4))
我想组合这些选择器,因为我还有一些:nth-child
条目。像这样的东西,但它不起作用:
#table tr:not(:nth-child(3), :nth-child(4))
这个 在jQuery中工作,但不在CSS中工作。我正在使用Chrome(我只需要它在那里工作)。
我无法为这种情况找到组合选择器。如何将选择器与:not
组合?
答案 0 :(得分:32)
选择器级别3不允许:not()
伪类中的单个simple selector以外的任何内容。作为一个jQuery选择器,它起作用,因为jQuery扩展了它的:not()
功能以允许任何选择器(如.not()
方法)。
但是,您的第二种语法是建议的enhancements to :not()
in Selectors 4之一,并且与您的第一种语法等效。虽然这个例子(无论如何都是这样写的)显示了一系列:not()
选择器,但提案说:
否定伪类,不是(X),是以选择器列表作为参数的功能表示法。它表示一个未由其参数表示的元素。
这里选择器列表只是一个以逗号分隔的选择器列表。
如果您需要否定包含组合子的选择器(>
,+
,~
,空格等,例如div p
),则无法使用{ CSS中的{1}};你必须使用jQuery解决方案。
答案 1 :(得分:3)
虽然明确的答案是真的,但我只想指出你可以用css实现你想要的东西,但只是以不同的方式。而不是不使用,你可以选择那些并取消应用你不想要的东西。
#table tr {
/* general case styling */
color: blue;
}
#table tr:nth-child(3),
#table tr:nth-child(4) {
color: black;
}