如何使用jQuery选择至少有一个标签作为直接子项的所有p标签?
对于文件:
<div>
<p><a>My Link</a></p>
<p><div><a>My nested Link</a></div></p>
</div>
它只返回第一个p标签。
答案 0 :(得分:1)
我认为您可能不得不使用.filter()
来执行此操作。以下代码应该满足您的需求:
$('p').filter(function() { return $(this).children('a').length > 0;});
编辑:修改了演示以包含有效的HTML(将<div>
替换为第二个<span>
内的<p>
。
答案 1 :(得分:1)
$(&#39; p:has(a)&#39;)
会做到这一点。
<强>更新强>
font
标记的问题可以修复如下:
$('p:has(a):not(:has(font))')
更新2
好的废弃所有这些。根据评论,:has()
过滤器不会直接查看直接子项。那么我们如何走另一条路并选择所有a
标签,然后选择父级为p
的父级。
$('a').parent('p')
或避免选择您可以执行的所有a
标记
$('p > a').parent()
又一次更新
感谢@BoltClock提出这个建议。以下语法也有效:
$('p:has(> a)')
答案 2 :(得分:0)
这很简单:
$("div p:first-child")
您可能需要考虑将id
或class
应用于div
,以便将DOM遍历限制为仅相关的div
和p
块
This answer is more or less the same thing,只是寻找最后一个孩子。
更新抱歉,误读了'第一个p标签'位。
试试这个:
$("div p:has(a)")