我有两组元素(有时)对应的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"/>
我希望通过<a>
请求加载具有匹配ID的<p>
时,会显示.get()
元素。
我想我会使用filter(),但无法让它工作。我试过了
$('a').filter(function() {
return $(this).attr('rel') == $('p').attr('id');
}).show();
这似乎适用于第一个元素,但我对filter()的理解是它应该遍历整个列表。感谢。
答案 0 :(得分:1)
试试这个:
$('a').each(function() {
var $anchor = $(this);
$('p').each(function() {
if($(this).attr('id') == $anchor.attr('rel')) {
$anchor.show();
}
});
});
我真的不确定filter
是否正在尝试做什么,也许其他人可以对此有所了解?
答案 1 :(得分:0)
$('p').attr('id')
只会返回第一个匹配元素的ID。因此,如果锚具有与jQuery找到的第一个段相同的rel
属性,则过滤器函数将仅返回true。所以你是对的,因为filter
会经历每一个锚点,但你不会经历每个段落。
加载段落时,您知道其ID。因此,您可以这样做:
$('a[rel='+paragraphID+']').show();