2010-06-22 3 views
18

J'essaie de trouver le premier lien de ma page qui correspond à "AAA" (exemple).Comment trouver un lien dans une page en fonction de son attribut href?

J'essaie d'abord d'obtenir les liens avec ce href:

$('a[href$="AAA"]') 

Selec Puis le premier:

$('a[href$="AAA"]')[0] 

ciblent ensuite l'attribut title de ce lien

$('a[href$="AAA"]')[0].attr("title"); 

Mais tout cela me revient "indéfini", à chaque pas. Comment faire cela?

ancre Exemple:

<a href="contents/medias/images/news/news_test_big.jpg" title="Nouvelle réalisation en ligne 1 FR" target="_blank" class="imageLink"> 
+0

Pouvez-vous envoyer un échantillon de l'un des '' balises réelles? – Pointy

+0

Voici l'un des liens: Merci ¨! – daviddarx

+0

@daviddarx J'ai ajouté l'exemple à votre question. –

Répondre

19

Que diriez-vous:

$("a[href='AAA']").first().attr("title") 
// or 
$("a[href='AAA']:first").attr("title") 

Ensuite, cela dépend si vous voulez que le href soit égale à 'AAA', contient, commence/finit avec elle. Dans ce cas, vous n'utiliserez pas href= mais href$= par exemple. Neil's answer contient les différents types de tests que vous pouvez utiliser.

Si vous pouviez poster votre code HTML, cela aiderait aussi.

+0

$ ("a [href = 'AAA']: premier") fonctionnerait aussi –

+0

@neil: vrai, je l'ai ajouté à ma réponse – marcgg

+0

Je vais essayer, je reviendrai dans quelques minutes – daviddarx

3

En supposant que vous avez un lien correspondant (c'est-à-dire, un qui se termine par AAA).

$('a[href="AAA"]:first').attr('title'); 

devrait fonctionner.

La raison pour laquelle vous obtenez indéfini pour attr est que ce n'est pas un objet jQuery après avoir appliqué l'indexeur au résultat de la requête, c'est l'élément DOM réel. Pour utiliser attr, il doit toujours être un objet jQuery. L'utilisation du sélecteur :first réduit les résultats de la requête au premier correspondant. Puisque attr retournera la valeur du premier attribut correspondant, ce n'est pas strictement nécessaire, mais je pense que cela rend l'intention plus claire. Si vous allez définir la valeur de l'attribut, attr s'appliquera à tous les éléments correspondants. Dans ce cas, c'est important. Je l'utiliserai donc aux deux endroits pour plus de clarté.

+0

+1 - c'est vrai, bon point sur '[0]' - c'est ce qui a causé l'erreur. mais '$ ('a [href $ =" AAA "]') [0] .attr (" title ");' va trop loin - il ne renvoie pas undefined, mais trows une exception: ".attr est pas une fonction " – Kobi

2

La façon dont vous l'avez écrit, vous cherchez un href que se termine par "AAA". Est-ce votre intention?

  • $= signifie "se termine par"
  • ^= signifie "commence par"
  • ~= signifie "contient"

Références: jQuery Selectors

6

$('a[href$="AAA"]') devrait fonctionner correctement, mais il recherche pour href s que fin avec AA UNE.

Essayez: $('a[href="AAA"]') - Égal AAA
Ou: $('a[href*="AAA"]') - Contient AAA

Questions connexes