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

我这样做是这样的:

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


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

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


在这种情况下,即使其中包含子元素,我也要选择p。但是,即使子元素是wbr标签。

最佳答案

您可以在:not()中包含另一个:has(),以排除某些子元素:

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


附带说明一下,如果外部:not()是您的.filter()选择器字符串的唯一部分,则可以简单地将.filter()换成.not(),以使代码更容易混淆:

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


这两个语句在英语中的含义相同:从集合$mainSection中排除具有非wbr子元素的元素。

09-10 11:46
查看更多