Ich möchte ein Ankertag erstellen, das JavaScript ausführt und dann dorthin geht, wo href
es aufgenommen wurde. Das Aufrufen einer Funktion, die mein JavaScript ausführt und dann window.location
oder top.location
an den href
Speicherort setzt, funktioniert bei mir nicht.
Stellen Sie sich vor, ich habe ein Element mit der ID "Foo" auf der Seite. Ich möchte einen Anker ähnlich dem folgenden verfassen:
<a href="#Foo" onclick="runMyFunction(); return false;">Do it!</a>
Wenn Sie darauf klicken, möchte ich runMyFunction ausführen und dann zu der Seite springen #Foo
(kein erneutes Laden verursachen - die Verwendung top.location
würde dazu führen, dass die Seite neu geladen wird ).
Vorschläge? Ich bin glücklich, jQuery zu verwenden, wenn es hier helfen kann ...
javascript
jquery
html
anchor
Psychotik
quelle
quelle
return true;
ist die Lösung, aber Sie können auch anrufenlocation.hash = '#Foo'
. Die Seite wird nicht neu geladen.Antworten:
Nur
return true
stattdessen?Der Rückgabewert aus dem
onClick
Code bestimmt, ob die inhärente angeklickte Aktion des Links verarbeitet wird oder nicht. Zurückgebenfalse
bedeutet, dass sie nicht verarbeitet wird. Wenn Sie jedoch zurückkehren, verarbeitettrue
der Browser sie, nachdem Ihre Funktion zurückgekehrt ist, und wechselt zur richtigen Anker.quelle
undefined
als falsch für diese Zwecke behandelt.und
Auf diese Weise wird Ihre Funktion ausgeführt UND Sie folgen dem Link UND Sie folgen dem Link genau, nachdem Ihre Funktion erfolgreich ausgeführt wurde.
quelle
Wenn der Link den Speicherort nur ändern soll, wenn die Funktionsausführung erfolgreich ist, tun
onclick="return runMyFunction();"
Sie dies und in der Funktion würden Sie true oder false zurückgeben.Wenn Sie nur die Funktion ausführen und dann das Ankertag seine Aufgabe ausführen lassen möchten, entfernen Sie einfach die
return false
Anweisung.Als Randnotiz sollten Sie stattdessen wahrscheinlich einen Ereignishandler verwenden, da Inline-JS keine sehr optimale Methode ist, um Dinge zu tun.
quelle
Wenn Sie eine saubere HTML-Struktur erstellen, können Sie diese verwenden.
quelle