Фильтр сравнения jQuery - PullRequest
       14

Фильтр сравнения jQuery

1 голос
/ 10 сентября 2009

У меня есть два набора элементов с (иногда) соответствующими атрибутами 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> появлялся при загрузке <p> с соответствующим идентификатором через запрос .get()

Я подумал, что буду использовать filter (), но не могу заставить его работать. Я пытался

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

Это похоже на первый элемент, но я понимаю, что filter () состоит в том, что он должен пройти весь список. Спасибо.

Ответы [ 2 ]

1 голос
/ 10 сентября 2009

Попробуйте это:

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

Я действительно не уверен насчет использования filter для того, что вы пытаетесь сделать, может, кто-то еще может пролить свет на это?

0 голосов
/ 10 сентября 2009

$('p').attr('id') будет возвращать только идентификатор первого соответствующего элемента. Таким образом, ваша функция фильтра будет возвращать true только в том случае, если якорь имеет тот же атрибут rel, что и первый абзац, найденный jQuery. Так что вы правы, в этом filter будет проходить через каждый якорь, но вы не проходите через каждый абзац.

Когда абзац загружен, вы знаете его идентификатор. Поэтому вы можете просто сделать это:

$('a[rel='+paragraphID+']').show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...