Jak uzyskać wartość href za pomocą jQuery?

163

Próbuję uzyskać wartość href za pomocą 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>

Ale to nie działa. Czemu?

Adi Sembiring
źródło
Powiedz nam, co dokładnie nie zadziałało? czy alert był pusty? czy dostałeś nawet 2 alerty? Jakieś błędy js? To działa dla mnie ...
Ben Rowe
upss ... przepraszam. problemem jest wyczyszczenie pamięci podręcznej
Adi Sembiring

Odpowiedzi:

351

Potrzebujesz

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

Wewnątrz modułu obsługi kliknięcia jQuery thisobiekt odwołuje się do klikniętego elementu, podczas gdy w Twoim przypadku zawsze otrzymujesz href dla pierwszego <a>elementu na stronie. Nawiasem mówiąc, właśnie dlatego twój przykład działa, ale twój prawdziwy kod nie

Gareth
źródło
12

Możesz uzyskać aktualną wartość href za pomocą tego kodu:

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

Aby uzyskać wartość href według identyfikatora

$("#mylink").attr("href");
Książę Patel
źródło
2

Działa ... Przetestowano w IE8 (nie zapomnij pozwolić na uruchomienie javascript, jeśli testujesz plik na swoim komputerze) i chrome.

AlfaTeK
źródło
Chrome może zablokować drugie wyskakujące okienko w zależności od ustawień. Czy testowałeś w Chrome? Jeśli tak, skomentuj swój pierwszy alert i zadziała.
Michael La Voie,
2

jeśli strona ma jeden <a>To działa , ale , wiele <a>, trzeba użyćvar href = $(this).attr('href');

wangtong
źródło
1
daje nieokreślony wynik
VishalParkash
0

Warto o tym wspomnieć

$('a').attr('href'); // gets the actual value
$('a').prop('href'); // gets the full URL always
Jahanggir Jaman
źródło