Comment obtenir la valeur href en utilisant jQuery?

163

J'essaie d'obtenir la valeur href en utilisant jQuery:

<html>
    <head>
        <title>Jquery Test</title>
         <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
        <script type="text/javascript">
        $(document).ready(function() {
            $("a").click(function(event) {
                alert("As you can see, the link no longer took you to jquery.com");
                var href = $('a').attr('href');
                alert(href);
                event.preventDefault();
            });
        });
        </script>
    </head>
    <body>
        <a href="http://jquery.com/">jQuery</a>
    </body>
</html>

Mais ça ne marche pas. Pourquoi?

Adi Sembiring
la source
Voulez-vous nous dire ce qui n'a pas fonctionné exactement? l'alerte était-elle vide? avez-vous même reçu 2 alertes? Des erreurs js? Ça marche pour moi ...
Ben Rowe
upss ..., désolé. le problème est d'effacer le cache
Adi Sembiring

Réponses:

351

Vous avez besoin

var href = $(this).attr('href');

Dans un gestionnaire de clics jQuery, l' thisobjet fait référence à l'élément sur lequel vous avez cliqué, alors que dans votre cas, vous obtenez toujours le href pour le premier <a>sur la page. C'est d'ailleurs pourquoi votre exemple fonctionne mais pas votre vrai code

Gareth
la source
12

Vous pouvez obtenir la valeur href actuelle par ce code:

$(this).attr("href");

Pour obtenir la valeur href par ID

$("#mylink").attr("href");
Prince Patel
la source
2

Cela fonctionne ... Testé dans IE8 (n'oubliez pas d'autoriser l'exécution de javascript si vous testez le fichier depuis votre ordinateur) et chrome.

AlfaTeK
la source
Chrome peut supprimer la deuxième fenêtre contextuelle en fonction de vos paramètres, avez-vous testé dans Chrome? Si tel est le cas, commentez votre première alerte et cela fonctionnera.
Michael La Voie
2

si la page en a un <a>It Works , mais , plusieurs <a>, doivent utiliservar href = $(this).attr('href');

Wangtong
la source
1
donne une sortie non définie
VishalParkash
0

Il vaut la peine de mentionner que

$('a').attr('href'); // gets the actual value
$('a').prop('href'); // gets the full URL always
Jahanggir Jaman
la source