Jquery $ ce ou chaque () pour spécifier un lien à la fois
Question
Im trouver jQuery difficile à apprendre car il semble y avoir beaucoup de façons d'écrire la même chose.
En guise d'exercice, je voudrais prendre le texte dans les balises d'ancrage et d'autres choses dans les liens attribut href.
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 bien le travail que je dois préciser à faire cette action pour chaque lien.
Dois-je utiliser une boucle foreach? Une fonction de .each ()? Ou $ cette notation? Seraient-ils travailler ensemble?
La solution
$('a').text()
renverrait 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 each () à spécifiez un lien à la timejqueryeachthiseditcloseflagchrisadd commentjqueryeachthisask votre propre questionjquerythiseachC ++ / Unix Programmer chez Waterfront International Development Ltdjobs.stackoverflow.comquestion feedaboutfaqblogpodcastprivacy policyadvertising infocontact usfeedback toujours welcomestackoverflow.comserverfault.comsuperuser.commetahowtogeek.comdoctype.comcc-wikiattribution nécessaire "
Par conséquent, vous devez utiliser jQuery.prototype.each afin que vous puissiez enregistrer une référence au texte de chaque 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 » déclarée est unique à ce corps de la fonction donc il y a beaucoup plus de contrôle à l'intérieur d'un. chacun.
En ce qui concerne l'accord de boucle de vanille - j'utiliser jQuery.prototype.each dessus parce qu'il est une fonction de niveau supérieur, vous devez assigner une variable à la longueur de la nodeList et commencer à 0, arrêtez-vous à la longueur (ou si l'ordre n'a pas d'importance de faire une marche arrière while) .. cela provoque un peu plus de travail que nécessaire.