除了子元素是<wbr />之外,仅选择没有子元素的元素

时间:2014-06-25 09:16:33

标签: javascript jquery html jquery-selectors

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

我是这样做的:

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

但是有一些像这样的特殊情况:

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

在这种情况下,我想选择p,即使其中有子元素。但是,如果子元素是wbr标记。

1 个答案:

答案 0 :(得分:2)

您可以在 :not()内添加另一个:has() ,以排除某些子元素:

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

在旁注中,如果外部:not().filter()选择器字符串的唯一部分,则只需将.filter()换成.not()即可代码有点不那么令人困惑:

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

这两个陈述在英语中的含义相同:排除集合$mainSection中具有任何不是wbr的子元素的元素。