[英]jQuery comparison filter
我有两组元素(有时)具有相应的rel和id属性:
<a rel="1" style="display:none"/>
<a rel="2" style="display:none"/>
<a rel="3" style="display:none"/>
and
<p id="1"/>
<p id="3"/>
<p id="chocolate"/>
我希望通过.get()
请求加载具有匹配ID的<p>
时出现<a>
元素。
我想我会使用filter(),但无法使其正常工作。 我试过了
$('a').filter(function() {
return $(this).attr('rel') == $('p').attr('id');
}).show();
这似乎在第一个元素上起作用,但是我对filter()的理解是它应该遍历整个列表。 谢谢。
尝试这个:
$('a').each(function() {
var $anchor = $(this);
$('p').each(function() {
if($(this).attr('id') == $anchor.attr('rel')) {
$anchor.show();
}
});
});
我真的不确定要使用filter
做什么,也许其他人可以对此有所了解?
$('p').attr('id')
只会返回第一个匹配元素的ID。 因此,只有当锚点具有与jQuery找到的第一段相同的rel
属性时,您的过滤器函数才会返回true。 因此,您是对的,因为该filter
将遍历每个锚点,但您并没有遍历每个段落。
加载段落时,您知道其ID。 因此,您可以执行以下操作:
$('a[rel='+paragraphID+']').show();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.