Javascript 如何使用jQuery查找一组元素的父元素?

Javascript 如何使用jQuery查找一组元素的父元素?,javascript,jquery,Javascript,Jquery,鉴于此标记: <div class="some_container"> <p>...</p> <p>...</p> <p>...</p> <p>...</p> <p>...</p> <p>...</p> <p>...</p> </div> 在jQuery(或j

鉴于此标记:

<div class="some_container">
  <p>...</p>
  <p>...</p>
  <p>...</p>
  <p>...</p>
  <p>...</p>
  <p>...</p>
  <p>...</p>
</div>

在jQuery(或javascript)中,我是否可以用一条基本上意味着:

Return the parent element that contains 4 or more <p> tags
返回包含4个或更多标记的父元素

返回具有4个或更多同级的所有标记的集合
。。。然后我可以在上面调用
.parent()


我不能简单地通过
进行搜索,因为它在我的用例中是可变的(不同的ID、类,有时甚至不是作为容器的
)。我需要一种方法来找到一组相关元素,然后找到该集合的父元素。这可能吗?

第n种类型可能就是您要找的。比如:

$("p:nth-of-type(4)").parent()

这将获取一个元素集合,每个元素至少有4个段落元素。

我不认为这太有效,但它比查找所有
p
标记并检查同级要快得多:

if ($('p').siblings('p').length > 4) 
{
     // Yay!!!
}
var parents = $("div").filter(function() {
    return $(this).children('p').length > 4;            
});

它确实适用于旧版本的Internet Explorer;jQuery为这样的选择器提供了后备方法。@Charmander啊,我的错,我想到的是CSS选择器,而不是jQuery。啊,这就是我需要的。谢谢正如我在帖子中所说,我不知道
。一些容器
,所以我无法对其进行查询。啊,错过了。为您编辑这感觉不是很好,因为我必须交叉检查DOM中的每个
p
。实际上比您接受的答案快25%。使用console.time()验证:console.time(“someKey”);log($('p')。同级('p')。长度);console.timeEnd(“someKey”);哇,真的吗?为什么,你知道吗?这会因JS引擎的不同而有所不同吗?这对我也不起作用,因为我不知道我的容器总是一个
div
(正如我在帖子中所说的)。你需要一些方法来关联元素,否则可能会有多个父元素。如果有两个容器都至少有四个
元素,该怎么办?@nnnnnn使用@MrOBrian的答案,可以循环收集并使用jQuery的
$构建父容器数组。每个
。无论如何,我希望页面上的所有容器都有4个或更多的
,所以我很满意。:)是的,当然,您可以构建阵列。我只是想确保你意识到你可能需要。。。
var parents = $("div").filter(function() {
    return $(this).children('p').length > 4;            
});