jQuery比较过滤器

时间:2009-09-10 19:38:19

标签: jquery 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"/>

我希望通过<a>请求加载具有匹配ID的<p>时,会显示.get()元素。

我想我会使用filter(),但无法让它工作。我试过了

  $('a').filter(function() {
    return $(this).attr('rel') == $('p').attr('id'); 
  }).show();

这似乎适用于第一个元素,但我对filter()的理解是它应该遍历整个列表。感谢。

2 个答案:

答案 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();