在我的HTML中有很多元素。一些div元素有一个表作为子元素。我想为所有div元素设置一些css属性,但是那些带有table和没有它的那些属性不同。
我的第一个方法:
包含表的div元素的class属性设置为'table',因此我可以使用属性选择器选择它们,如下所述:http://www.w3.org/TR/selectors/#attribute-selectors
div[class*="Table"]
{
/* Set Properties for all div with 'table' inside class-attribute */
}
不幸的是,似乎没有相反的属性选择器。
所以我的第一个问题是:这是对的还是我能做什么?
我的下一个方法是,检查一个孩子是否是一张桌子。在谷歌的帮助下,我只能找到如何选择,例如元素的第一个子元素,但不是如何检查,如果它是一个表格。
所以我的问题2和3是:我如何选择那些包含(或不包含)作为孩子的表格的div元素?
编辑:通常表格是第一个孩子,但如果可能,我想检查所有子元素是否为表格
答案 0 :(得分:2)
无法使用CSS(2.1或3)定位父元素。您可以做的最好的事情是手动将类添加到您要定位的所有div
标记,或使用JavaScript编写您的选择标准。
如果您使用JavaScript来执行此操作,您可以使用jQuery轻松完成此操作:
$('div > :first-child').not('table').parent().addClass('notables');
修改评论:如果您要选择没有嵌套任何表的div
,可以使用以下jQuery :has()选择器:< / p>
$('div:not(:has(table))').addClass('notables');
答案 1 :(得分:1)
将类添加到包含表的<div>
的方法是使用CSS执行此操作的唯一方法。
如果这有助于此方法,则有the :not()
selector。它不受IE 8及以下版本以及Opera 9及以下版本的支持,但所有其他浏览器都支持它。
通过为<div>
设置不包含div
选择器的表的样式,然后使用表类覆盖<div>
s的样式,可以获得相同的效果,但:not()
可能会减少冗长。在这里演示:http://jsfiddle.net/LyLS5/