Frage

Ich finde, dass jQuery zu schwer zu erlernen ist, da es anscheinend viele Möglichkeiten gibt, dasselbe zu schreiben.

Als Übung möchte ich den Text in Anker-Tags nehmen und ihn in das href-Attribut des Links einfügen.

z.B

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

werden

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

mein erster Versuch war

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

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

was eindeutig nicht funktioniert, da ich angeben muss, dass diese Aktion für jeden Link ausgeführt werden soll.

Sollte ich eine foreach-Schleife verwenden?Eine .each()-Funktion?Oder $diese Notation?Würden sie alle funktionieren?

War es hilfreich?

Lösung

$('a').text()

würde die Kombination der Textwerte aller Ankerknoten zurückgeben.Ich habe es gerade auf Stackoverflow gemacht und es hat mir Folgendes gebracht:

"moderLogoutaboutfaqQuestionStagsusersBadgesunansveredask FragejQuery $ this oder jeder (), um einen Link zu einem Zeitpunkt anzugeben, der JQueryeAdiseditcloseFlagChrisadd Kommentar kommentiertjQueryachsekdisask. ISING Infocontact usfeedback Immer annäherndackoverflow.comserverfault.comSuperUser.Commetahowtogeek.comdoctype.comcc-wikiattribution erforderlich "

Daher sollten Sie jQuery.prototype.each verwenden, damit Sie einen Verweis auf den Text jedes einzelnen Ankers speichern können:

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

Der zusätzliche Vorteil besteht darin, dass jede Funktion in ihrem eigenen Ausführungskontext ausgeführt wird, jede von Ihnen definierte Variable, jeder deklarierte „Text“ für diesen Funktionskörper eindeutig ist, sodass es eine gibt viel mehr Kontrolle innerhalb eines .each.

In Bezug auf den Vanilla-Loop-Deal würde ich jQuery.prototype.each darüber verwenden, da es sich um eine Funktion auf höherer Ebene handelt. Sie müssten der Länge der NodeList eine Variable zuweisen und bei 0 beginnen und bei der Länge aufhören (oder wenn die Reihenfolge dies tut). Es spielt keine Rolle, eine umgekehrte while-Schleife durchzuführen.das verursacht einfach mehr Arbeit als nötig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top