为什么 $(':not(:has(*))').find("p");不会给出输出
why $(':not(:has(*))').find("p"); won't give an output
我想获取文本的父节点,我知道这不太容易,应该通过手动遍历来完成。但我想知道为什么以下内容不起作用。
$(':not(:has(*))').find(':contains("mytext")');
我只在结果中查找 p 标签,这让事情变得更容易了。
我知道 $(':not(:has(*))');
会 return 一些 P 标签
.find("p");
应该 select 那些 P 标签
我知道它不起作用,但我想知道为什么?
您正在尝试查找没有后代的元素的后代元素。那是行不通的。
如果您正在寻找没有后代的 p
元素,您可能打算使用 .filter()
,而不是 .find()
:
$(':not(:has(*))').filter('p')
或者您可以将 p
选择器附加到 :not()
— 确实没有理由在此处 运行 一个单独的选择器(除非您的选择器字符串来自变量或其他):
$('p:not(:has(*))')
我想获取文本的父节点,我知道这不太容易,应该通过手动遍历来完成。但我想知道为什么以下内容不起作用。
$(':not(:has(*))').find(':contains("mytext")');
我只在结果中查找 p 标签,这让事情变得更容易了。
我知道 $(':not(:has(*))');
会 return 一些 P 标签
.find("p");
应该 select 那些 P 标签
我知道它不起作用,但我想知道为什么?
您正在尝试查找没有后代的元素的后代元素。那是行不通的。
如果您正在寻找没有后代的 p
元素,您可能打算使用 .filter()
,而不是 .find()
:
$(':not(:has(*))').filter('p')
或者您可以将 p
选择器附加到 :not()
— 确实没有理由在此处 运行 一个单独的选择器(除非您的选择器字符串来自变量或其他):
$('p:not(:has(*))')