Css 如何选择第一个子元素不是表的所有div元素

Css 如何选择第一个子元素不是表的所有div元素,css,Css,在我的HTML中有很多元素。某些div元素将表作为子元素。我想为所有div元素设置一些css属性,但有table和没有table的属性有所不同 我的第一个方法: 包含表的那些div元素的class属性设置为“table”,因此我可以使用属性选择器选择它们,如下所述: 不幸的是,似乎没有相反的属性选择器 所以我的第一个问题是:这是对的还是我能做什么 我的下一个方法是,检查一个孩子是否是表。在谷歌的帮助下,我只知道如何选择一个元素的第一个子元素,而不知道如何检查它是否是一个表 所以我的问题2和3是:

在我的HTML中有很多元素。某些div元素将表作为子元素。我想为所有div元素设置一些css属性,但有table和没有table的属性有所不同

我的第一个方法:

包含表的那些div元素的class属性设置为“table”,因此我可以使用属性选择器选择它们,如下所述:

不幸的是,似乎没有相反的属性选择器

所以我的第一个问题是:这是对的还是我能做什么

我的下一个方法是,检查一个孩子是否是表。在谷歌的帮助下,我只知道如何选择一个元素的第一个子元素,而不知道如何检查它是否是一个表

所以我的问题2和3是:如何选择那些包含(或不包含)表作为子级的div元素


编辑:通常表是第一个子元素,但如果可能的话,我想检查所有子元素是否为表

没有办法使用CSS(2.1或3)来针对父元素。您所能做的最好的事情就是手动将一个类添加到您想要定位的所有
div
标记中,或者使用JavaScript编写您的选择标准

如果要使用JavaScript来实现这一点,可以使用jQuery轻松实现,如下所示:

$('div > :first-child').not('table').parent().addClass('notables');

编辑注释:如果要选择没有嵌套任何表的
div
,可以使用以下选项和选择器:

$('div:not(:has(table))').addClass('notables');

没有办法使用CSS(2.1或3)以父元素为目标。您所能做的最好的事情就是手动将一个类添加到您想要定位的所有
div
标记中,或者使用JavaScript编写您的选择标准

如果要使用JavaScript来实现这一点,可以使用jQuery轻松实现,如下所示:

$('div > :first-child').not('table').parent().addClass('notables');

编辑注释:如果要选择没有嵌套任何表的
div
,可以使用以下选项和选择器:

$('div:not(:has(table))').addClass('notables');

将类添加到包含表的
中的方法是使用CSS实现此目的的唯一方法

如果这有助于这种方法的话。IE8及以下版本和Opera9及以下版本不支持它,但所有其他浏览器都支持它


通过使用
div
选择器为不包含表的
设置样式,然后使用table类覆盖
的样式,可以获得相同的效果,但是
:not()
可能会使其不那么冗长。此处演示:

将类添加到包含表的
中的方法是使用CSS完成此操作的唯一方法

如果这有助于这种方法的话。IE8及以下版本和Opera9及以下版本不支持它,但所有其他浏览器都支持它


通过使用
div
选择器为不包含表的
设置样式,然后使用table类覆盖
的样式,可以获得相同的效果,但是
:not()
可能会使其不那么冗长。这里演示:

但是使用这种方法,我仍然无法在没有表的情况下选择那些div元素,是吗?@Em1:我想您可以,使用:
$('*:not(div:contains(table))感谢您的编辑。但是我会尽量不使用jQuery,因为在另一个答案中给出了解决方法。但至少现在我知道了如何使用JavaScript实现这一点。是的,老实说,我会避免使用JavaScript,而是在HTML中手动添加CSS类。我很少依赖JavaScript来处理非intranet内容。但是使用这种方法,我仍然无法在没有表的情况下选择那些div元素,是吗?@Em1:我想您可以,使用:
$('*:not(div:contains(table))感谢您的编辑。但是我会尽量不使用jQuery,因为在另一个答案中给出了解决方法。但至少现在我知道了如何使用JavaScript实现这一点。是的,老实说,我会避免使用JavaScript,而是在HTML中手动添加CSS类。我很少依赖JavaScript来处理非内联网的内容。很好,我不知道CSS 3规范有一个
not()
选择器@wsanville:我也是——尽管有IE支持,但我认为它非常有用。很好,我不知道CSS 3规范有一个
not()
选择器@wsanville:我也是——尽管有人支持,我认为这很有用。