用于按属性存在排除的CSS选择器

时间:2015-01-01 19:16:06

标签: html css css-selectors nokogiri

我正在解析的文档具有以下两种td标记样式(以及td标记的其他实例):

<td align="right" nowrap bgcolor="#A1C87A">...</td>

<td align="right" nowrap>...</td>

如何编写仅选择第二种类型的选择器,并排除所有其他td标签?

document.css('td:not([bgcolor="#A1C87A"])')

排除第一种类型,包括第二种类型以及所有其他td标记。

document.css('td[align="right"][nowrap]')

排除所有其他td代码,但包括上述两种类型。

3 个答案:

答案 0 :(得分:9)

您可以简单地将:not选择器与其他属性选择器结合使用:

document.css('td:not([bgcolor="#A1C87A"])[align="right"][nowrap]')

你甚至可以将:not放在其他人之后(它不需要在元素名称旁边):

document.css('td[align="right"][nowrap]:not([bgcolor="#A1C87A"])')

这些元素都会选择tdbgcolor="#A1C87A"但没有nowrap的所有align="right"元素,这就是您所追求的。

答案 1 :(得分:0)

td:not([align="right"][nowrap][bgcolor])应该足以满足您的需求

答案 2 :(得分:0)

td[nowrap][bgcolor] ~ td[nowrap] { code };