我想选择没有子元素的元素。这是因为我想在一个非常复杂的网站中选择所有文本。
我这样做是这样的:
$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
子元素的元素。