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ê?


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

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


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");

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.


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


0

Vale ressaltar que

$('a').attr('href'); // gets the actual value
$('a').prop('href'); // gets the full URL always
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.