【问题标题】:jQuery comparison filterjQuery比较过滤器
【发布时间】:2009-09-10 19:38:18
【问题描述】:

我有两组元素(有时)具有对应的 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 的 &lt;p&gt; 时出现 &lt;a&gt; 元素。

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

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

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

【问题讨论】:

    标签: jquery filter


    【解决方案1】:

    试试这个:

    $('a').each(function() {
        var $anchor = $(this);
        $('p').each(function() {
            if($(this).attr('id') == $anchor.attr('rel')) {
                $anchor.show();
            }
        });
    });
    

    我真的不确定 filter 用于您要做什么,也许其他人可以对此有所了解?

    【讨论】:

    • filter 会起作用,但他必须检查的不仅仅是第一段元素。
    • 谢谢,这很好用。我喜欢geowa4的建议,但我仍然需要检查是否有匹配的ID。我不能保证加载的元素会匹配我想要显示的元素。再次感谢!
    【解决方案2】:

    $('p').attr('id') 只会返回第一个匹配元素的 ID。因此,只有当锚点具有与 jQuery 找到的第一段相同的 rel 属性时,您的过滤器函数才会返回 true。所以你是对的,filter 会遍历每个锚点,但你不会遍历每个段落。

    加载段落时,您知道它的 ID。因此,您可以这样做:

    $('a[rel='+paragraphID+']').show();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 2012-09-08
      相关资源
      最近更新 更多