繁体   English   中英

jQuery比较过滤器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM