Como obter o valor href usando o jQuery?

163

Estou tentando obter o valor 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>

Mas isso não funciona. Por quê?

Adi Sembiring
fonte
Gostaria de nos dizer o que exatamente não funcionou? o alerta estava vazio? você recebeu 2 alertas? Algum erro de js? Está funcionando para mim ...
Ben Rowe
upss ... desculpe. o problema é limpar o cache
Adi Sembiring
Brinque aqui: jsfiddle.net/LijoCheeran/t1xs4wo7
LCJ 5/05

Respostas:

351

Você precisa

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

Dentro de um manipulador de cliques do jQuery, o thisobjeto se refere ao elemento clicado, enquanto no seu caso você está sempre recebendo o href do primeiro <a>na página. Aliás, é por isso que seu exemplo funciona, mas seu código real não

Gareth
fonte
12

Você pode obter o valor atual href por este código:

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

Para obter o valor href por ID

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

Funciona ... Testado no IE8 (não se esqueça de permitir que o javascript seja executado se você estiver testando o arquivo do seu computador) e chrome.

AlfaTeK
fonte
O Chrome pode suprimir o segundo pop-up, dependendo das suas configurações. Você estava testando no Chrome? Nesse caso, comente o seu primeiro alerta e ele funcionará.
Michael La Voie
2

se a página tiver uma, <a>ela funciona, mas muitas<a> , usevar href = $(this).attr('href');

Wangtong
fonte
1
dá saída indefinida
VishalParkash 17/01
0

Vale ressaltar que

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