Pergunta

Estou achando o jQuery muito difícil de aprender, pois parece haver muitas maneiras de escrever a mesma coisa.

Como exercício, gostaria de pegar o texto das tags âncora e colocá-lo no atributo links href.

por exemplo

<a href="">http://www.something.com</a>

tornar-se

<a href="http://www.something.com">http://www.something.com</a>  

minha primeira tentativa foi

<script type="text/javascript">
$(document).ready(function() {
var text = $('a').text();

$('a').attr( 'href', text );
});
</script>

o que claramente não funciona, pois preciso especificar para executar esta ação para cada link.

Devo usar um loop foreach?Uma função .each()?Ou $ esta notação?Todos funcionariam?

Foi útil?

Solução

$('a').text()

retornaria a combinação de cada valor de texto dos nós âncora.Acabei de fazer isso no stackoverflow e me deu:

"MederLogoutoutFaqQóstionstagsUsersBadgesUnansweredask QuestionJQuery $ ou cada um () para especificar um link em um tempo de realização do seu próprio questionário de reação do seu próprio questionário e unidade de reação ao helicmation. Ontact USFeedback sempre WelComestackOverflow.comserverfault.comsuperuser.commetaHowtoGeek.comdoctype.comcc-wikiattruction necessário "

Portanto, você deve usar jQuery.prototype.each para poder salvar uma referência ao texto de cada âncora individual:

$('a').each(function() {
    var text = $(this).text();
    $(this).attr('href', text );
});

O benefício adicional é que cada função é executada em seu próprio contexto de execução, cada variável que você define, cada 'texto' declarado é exclusivo para o corpo da função, portanto há um muito mais controle dentro de um .each.

Em relação ao acordo de loop vanilla - eu usaria jQuery.prototype.each porque é uma função de nível superior, você teria que atribuir uma variável ao comprimento do nodeList e começar em 0, parar no comprimento (ou se o pedido não não importa, faça um loop while reverso).isso apenas causa mais trabalho do que o necessário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top