为什么$(':not(:has(*))')。find(" p");不会给出输出

时间:2016-05-09 08:06:09

标签: javascript jquery jquery-selectors

我想获得文本的父节点,我知道这不容易实现,应该通过手动遍历来完成。但我想知道为什么以下不起作用。

$(':not(:has(*))').find(':contains("mytext")');

只需在结果中查找p标签,我就更容易了。 我知道$(':not(:has(*))');会返回一些P标签 .find("p");应该选择那些P标记

我知道它不起作用,但我想知道为什么?

1 个答案:

答案 0 :(得分:1)

您正在尝试查找没有后代的元素的后代元素。那不行。

如果您正在寻找没有后代的p元素,您可能需要使用.filter(),而不是.find()

$(':not(:has(*))').filter('p')

或者您可以将p选择器附加到:not() - 这里没有理由运行单独的选择器(除非您的选择器字符串来自变量或其他内容):

$('p:not(:has(*))')