2009-10-06 7 views
3

Im trouver jQuery difficile à apprendre car il semble y avoir plusieurs façons d'écrire la même chose. Comme exercice, je voudrais prendre le texte dans les balises d'ancrage et le bourrer dans l'attribut href de liens.

par exemple

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

pour devenir

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

mon premier attemp était

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

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

qui ne marche pas clairement le travail que je dois préciser à faire cette action pour chaque lien.

Dois-je utiliser une boucle foreach? Une fonction .each()? Ou $ cette notation? Seraient-ils tous travailler?

Répondre

7
$('a').text() 

retournerait la combinaison de toutes les valeurs de texte nœuds d'ancrage .. Je l'ai fait sur stackoverflow et il m'a donné:

« mederlogoutaboutfaqQuestionsTagsUsersBadgesUnansweredAsk QuestionJquery $ ce ou chaque() pour spécifier un lien à un timejqueryeachthiseditcloseflagchrisadd commentjqueryeachthisask votre propre questionjquerythiseachC++/Unix Programmeur chez Waterfront International Ltdjobs.stackover flow.comquestion feedaboutfaqblogpodcastprivacy policyadvertising infocontact usfeedback toujours welcomestackoverflow.comserverfault.comsuperuser.commetahowtogeek.comdoctype.comcc-wikiattribution nécessaire »

vous devez donc utiliser jQuery.prototype.each afin que vous puissiez enregistrer une référence à chaque texte d'ancrage individuel:

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

L'avantage est que chaque fonction exécute dans son propre contexte d'exécution, chaque variable que vous définissez, chaque « texte » est déclaré uni que à ce corps de la fonction il y a donc un lot plus de contrôle à l'intérieur d'un. En ce qui concerne la boucle vanilla, j'utiliserai jQuery.prototype.each parce que c'est une fonction de niveau supérieur, vous devrez assigner une variable à la longueur de nodeList et commencer à 0, arrêter à la longueur (ou si l'ordre n'a pas d'importance, faire une boucle inverse) .. cela cause juste plus de travail que nécessaire.

+0

merci vous est parfaitement logique, des conseils sur la façon de pratiquer jquery? – chris

+0

Installez Firebug, allez sur le site Web jQuery.com, ouvrez la console et expérimentez autant que vous le souhaitez. –

+0

continuez juste à pratiquer! Regarder à travers la source vous aidera certainement comme vous pouvez voir comment certaines commandes sont accomplies, mais je vous recommande de le faire si vous connaissez déjà JavaScript, car une partie du code peut être compliquée pour arriver à un point de compréhension avec –

Questions connexes