我想选择没有子元素的元素。这是因为我想在一个非常复杂的网站中选择所有文本。
我是这样做的:
$mainSection.filter(":not(:has(*))");
但是有一些像这样的特殊情况:
<p>Some interesting text <wbr></wbr> that has an "optional word break" tag in it</p>
在这种情况下,我想选择p,即使其中有子元素。但是,如果子元素是wbr标记。
答案 0 :(得分:2)
您可以在 :not()
内添加另一个:has()
,以排除某些子元素:
$mainSection.filter(":not(:has(:not(wbr)))");
在旁注中,如果外部:not()
是.filter()
选择器字符串的唯一部分,则只需将.filter()
换成.not()
即可代码有点不那么令人困惑:
$mainSection.not(":has(:not(wbr))");
这两个陈述在英语中的含义相同:排除集合$mainSection
中具有任何不是wbr
的子元素的元素。