使用filter()根据父级过滤jquery

时间:2015-09-07 07:34:00

标签: javascript jquery selector parent

我在jquery文档中看到我可以使用.parent()根据父级过滤我匹配的元素。但是在这个过程中,我得到的最终结果是父元素集,而不是原始元素集。所以我看到我可以使用过滤器来实现我想要的。但是我发现很少有关于如何根据父级使用过滤器进行过滤的文档。

例如,我的html是:

<div id="social">
    <a href="www.facebook.com">Facebook</a><br/>
    <a href="www.twitter.com">Twitter</a><br/>
</div>
<div id="topsites">
    <a href="www.facebook.com">Facebook</a><br/>
    <a href="stackoverflow.com">Stack Overflow</a><br/>
</div>

我想获得一组元素,这些元素由<a>标记组成,其中facebook属性href属性,但在social div内父母。

我怀疑代码会是这样的:

$('a[href*="facebook"]').filter( ... ).click(function() {

});

但我完全不知道在过滤器上放什么。 "parent#social"

另一种说法是使用过滤功能。

$('a[href*="facebook"]').filter(function(index) {
    return ...
}
.click(function() {

});

我也不知道要把什么代码放在......上。它是this.parent.id == "social"吗?如果可能的话,我更喜欢第一种形式,但如果解决方案只能通过使用第二种形式(过滤功能)来实现,那么它没问题。非常感谢你。

2 个答案:

答案 0 :(得分:2)

.parent()没有过滤,它会遍历。它需要一个jQuery对象,它列出一个数组(大小为[0,n)),并为每个元素的父级生成一个新的jQuery对象。

使用您正在寻找的列表获取jQuery对象要简单得多......

CSS选择器,jQuery基于(具有各种扩展)本质上是分层的。这意味着选择一些父母的特定孩子是非常微不足道的。用于选择所需元素的CSS选择器是:

#social a[href*="facebook"]

如果你在jQuery构造函数中使用它,你会得到你的对象:

$('#social a[href*="facebook"]')

答案 1 :(得分:1)

  

我想获得一组元素,这些元素包含<a>标记,其中包含facebook的href属性,但在social div父级内。

此处不需要filter

$('#social a[href*="facebook"]')

会做的。