只选择没有子元素的元素,除非子元素是<wbr></wbr>

Select only elements that have no children except the child element is a <wbr></wbr>

本文关键字:元素 wbr 选择      更新时间:2023-09-26

我想选择没有子元素的元素。这是因为我想在一个非常复杂的网站中选择所有的文本。

我这样做:

$mainSection.filter(":not(:has(*))");

但是还有一些特殊的情况,比如:

<p>Some interesting text <wbr></wbr> that has an "optional word break" tag in it</p>

在这种情况下,我想选择p,即使它有子元素。但是如果子元素是一个wbr标签。

您可以在 :has()中使用另一个:not() 来排除某些子元素:

$mainSection.filter(":not(:has(:not(wbr)))");

在旁注上,如果外部:not().filter()选择器字符串的唯一部分,您可以简单地将.filter()交换为.not(),以使代码不那么混乱:

$mainSection.not(":has(:not(wbr))");

这两个语句在英语中的意思是一样的:从集合$mainSection中排除有非wbr的子元素的元素。