2010-06-13 3 views
1

J'ai une liste non ordonnée tels que:Comment puis-je obtenir une valeur href d'un lien dans une liste ul li

<ul id="cities"> 
    <li><a href="/london/">London<a></li> 
    <li><a href="/new-york/">New York<a></li> 
    <li><a href="/paris/">Paris<a></li> 
<ul> 

en utilisant jquery comment puis-je obtenir la valeur href pour « New York »? Seule la valeur du texte d'ancrage est connue par le client, donc je voudrais trouver le texte d'ancre correspondant et extraire le href.

Merci

Répondre

9

Vous pouvez utiliser le sélecteur :contains, comme ceci:

$("#cities li a:contains(New York)").attr('href'); 

Ou plus longtemps, mais plus précis (puisque :contains() correspondrait à "New York City" aussi bien), vous pouvez utiliser la méthode .filter() pour une correspondance exacte , comme ceci:

$("#cities li a").filter(function() { 
    return $(this).text() === "New York"; 
}).attr('href'); 
+0

@Akk - L'exécutez-vous sur 'document.ready', enveloppé dans un' $ (function() {}); 'par exemple? Comme ceci: http://jsfiddle.net/yadpJ/ –

1
var href = $('ul#cities li a').filter(function() { 
    return $(this).text() === "New York"; 
}).attr('href'); 
+1

Lorsque vous utilisez ce que vous n'avez pas besoin Id préfixer avec l'élément ... –

+1

- C'est @ James * habituellement * vrai, mais pas à 100% du temps, un seul script peut être utilisé sur une douzaine de pages, et si '# villes' était une liste de villes div, complètement indépendant sur une autre page? Ça peut être important, c'est le point :) Ne vous méprenez pas, si vous êtes sûr à 100% de l'utilisation de l'ID, par tous les moyens, laissez-le, c'est un sélecteur plus rapide. –

+0

@James oui, comme Nick dit que c'est quelque chose que je fais comme un test de santé mentale, et je le fais dans les exemples ici parce que cela aide à clarifier. On ne sait jamais à quel point les extraits de code sont précis dans les questions ici! – Pointy

Questions connexes