我在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"
吗?如果可能的话,我更喜欢第一种形式,但如果解决方案只能通过使用第二种形式(过滤功能)来实现,那么它没问题。非常感谢你。
答案 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"]')
会做的。