Jquery $ questo o ciascuna () per specificare un collegamento alla volta
Domanda
Im trovando jQuery per difficile da imparare come ci sembra essere molti modi per scrivere la stessa cosa.
Come esercizio Vorrei prendere il testo all'interno di tag di ancoraggio e roba nei link href.
es
<a href="">http://www.something.com</a>
di diventare
<a href="http://www.something.com">http://www.something.com</a>
il mio primo attemp era
<script type="text/javascript">
$(document).ready(function() {
var text = $('a').text();
$('a').attr( 'href', text );
});
</script>
che pretende molto chiaramente il lavoro come ho bisogno di specificare di fare questa azione per ogni link.
Dovrei usare un ciclo foreach? A) la funzione .each (? O $ questa notazione? Avrebbero tutti lavorare?
Soluzione
$('a').text()
restituirebbe la combinazione di ogni valore nodi di ancoraggio di testo .. ho appena fatto su StackOverflow e mi ha dato:
"mederlogoutaboutfaqQuestionsTagsUsersBadgesUnansweredAsk QuestionJquery $ questo o ciascuna () per specificare un link alla timejqueryeachthiseditcloseflagchrisadd commentjqueryeachthisask il proprio questionjquerythiseachC ++ / Unix Programmatore a Waterfront Internazionale Ltdjobs.stackoverflow.comquestion feedaboutfaqblogpodcastprivacy policyadvertising infocontact usfeedback sempre welcomestackoverflow.comserverfault.comsuperuser.commetahowtogeek.comdoctype.comcc-wikiattribution necessaria "
Pertanto si consiglia di utilizzare jQuery.prototype.each modo da poter risparmiare un riferimento al testo di ogni singolo ancoraggio:
$('a').each(function() {
var text = $(this).text();
$(this).attr('href', text );
});
Il vantaggio è che ogni funzione viene eseguito nel proprio contesto di esecuzione, ogni variabile si definisce, ogni 'testo' dichiarato è unico per quel corpo della funzione quindi c'è una molto un maggiore controllo all'interno di una. ciascuna.
Per quanto riguarda la vaniglia ciclo affare - avrei usato jQuery.prototype.each su di esso perché è una funzione di livello superiore, si dovrà assegnare una variabile alla lunghezza del NodeList e iniziare a 0, fermarsi alla lunghezza (o se l'ordine non importa fare un Reverse ciclo while) .. questo provoca solo più lavoro del necessario.