Come ottenere il valore href usando jQuery?


163

Sto cercando di ottenere il valore href usando 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>

Ma non funziona Perché?


Vuoi dirci cosa non ha funzionato esattamente? l'avviso era vuoto? hai ricevuto almeno 2 avvisi? Qualche errore js? Funziona per me ...
Ben Rowe,

upss ..., scusa. il problema è svuotare la cache
Adi Sembiring il

Risposte:


351

Hai bisogno

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

All'interno di un gestore di clic jQuery, l' thisoggetto fa riferimento all'elemento selezionato, mentre nel tuo caso otterrai sempre l'href per il primo <a>sulla pagina. Questo, per inciso, è il motivo per cui il tuo esempio funziona ma il tuo vero codice no


12

Puoi ottenere il valore href corrente con questo codice:

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

Per ottenere il valore href dall'ID

$("#mylink").attr("href");

2

Funziona ... Testato in IE8 (non dimenticare di consentire l'esecuzione di JavaScript se stai testando il file dal tuo computer) e Chrome.


Chrome può sopprimere il secondo popup in base alle tue impostazioni, stavi testando in Chrome? In tal caso, commenta il tuo primo avviso e funzionerà.
Michael La Voie,

2

se la pagina ne ha una <a>Funziona , ma , molti <a>, è necessario utilizzarevar href = $(this).attr('href');


1
dà un output indefinito
VishalParkash

0

Vale la pena menzionarlo

$('a').attr('href'); // gets the actual value
$('a').prop('href'); // gets the full URL always
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.