Question

J'ai deux ensembles d'éléments avec (parfois) les attributs rel et id correspondants:

<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"/>

Je souhaite qu'un élément <a> apparaisse lorsqu'un <p> identifiant correspondant est chargé via une requête .get().

J'ai pensé que j'utiliserais filter (), mais je ne peux pas le faire fonctionner. J'ai essayé

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

Cela semble fonctionner sur le premier élément, mais ma compréhension de filter () est qu’il devrait parcourir toute la liste. Merci.

Était-ce utile?

La solution

Essayez ceci:

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

Je ne suis vraiment pas sûr de l’utilisation de filter pour ce que vous essayez de faire, peut-être que quelqu'un d'autre pourra nous éclairer à ce sujet?

Autres conseils

$('p').attr('id') ne renverra jamais que l'ID du premier élément correspondant. Ainsi, votre fonction de filtrage ne retournera jamais vrai que si l'ancre a le même attribut rel que le premier paragraphe trouvé par jQuery. Vous avez donc raison, en ce sens que filter passera par toutes les ancres, mais que vous ne parcourez pas tous les paragraphes.

Lorsque le paragraphe est chargé, vous connaissez son identifiant. Par conséquent, vous pouvez simplement faire ceci:

$('a[rel='+paragraphID+']').show();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top