Wie kann ich verhindern, dass ein Klick auf einen „#“-Link zum Seitenanfang springt?
Lesezeit: 5 Minuten
st4ck0v3rfl0w
Ich verwende derzeit <a> Tags mit jQuery, um Dinge wie Klickereignisse usw. zu initiieren.
Ein Beispiel für das, was ich tue, ist: <a href="#" class="someclass">Text</a>.
Aber ich mag es nicht, wie das ‘#’ die Seite zum Anfang der Seite springen lässt. Was kann ich stattdessen tun?
Duplikat von stackoverflow.com/questions/720970/jquery-hyperlinks-href-value/…
– Bogdan Constantinescu
15. Juli 2010 um 6:59 Uhr
Ich bin hier mit David Dorward und Gargantaun in der verknüpften doppelten Frage. Wenn Sie Links auf Ihrer Website haben, müssen diese wie normale Links funktionieren. Wenn JavaScript sie abfängt und etwas anderes macht, schön und gut, aber Sie müssen dort einen echten Link haben, der zu einer echten Seite führt. Dies ist aus allen möglichen Gründen notwendig, nicht zuletzt aus SEO und Zugänglichkeit.
– Daniel Priden
15. Juli 2010 um 7:11 Uhr
“Dumm ist wer dummes tut” Wir waren alle schon einmal dort 🙂
– nimmthin
15. Juli 2010 um 12:24 Uhr
Chris
Das ist also alt, aber … nur für den Fall, dass jemand dies bei einer Suche findet.
Benutz einfach "#/" anstatt "#" und die Seite springt nicht.
das funktioniert, weil es zu dem benannten Anker navigiert /Nicht weil #/ hat irgendeine Bedeutung. mit kannst du das gleiche machen #whateveryouwant und es wird einen Sprung nach oben verhindern
– Slang
12. Juni 2015 um 15:54 Uhr
@slang, obwohl du Recht hast, und das ist nur Spitzfindigkeit, aber ich würde lieber “#/” anstelle von “#whateveryouwant” verwenden, weil “#/” ziemlich häufig verwendet wird und somit Absichten verrät (Clean Code). Es könnte jedoch immer noch eine Ergänzung zur Antwort sein.
– jobbert
4. Mai 2016 um 11:01 Uhr
Achtung – dies erstellt einen Datensatz im Browserverlauf, sodass das Zurückklicken nicht das bewirkt, was der Benutzer nach dem Klicken auf einen Link erwartet #/ oder sonst was zB #whatever.
– Studiozeit
5. September 2016 um 7:36 Uhr
@DarrenSweeney Sie haben Recht, aber die Verwendung eines # erstellt auch einen Datensatz im Browserverlauf. Grundsätzlich ist das Verhalten gleich.
– Gary Brunton
11. Januar 2017 um 16:51 Uhr
Weiß jemand, warum es überhaupt zu Sprüngen kommt?
– Ruben S
10. Mai 2022 um 12:15 Uhr
BoltClock
Wenn Sie in jQuery das Click-Ereignis verarbeiten, Geben Sie false zurück, um zu verhindern, dass der Link auf die übliche Weise reagiert verhindern Sie die Standardaktion, die darin besteht, die zu besuchen href Attribut, vom Stattfinden (laut PoweRoys Kommentar und Eriks Antwort):
$('a.someclass').click(function(e)
{
// Special stuff to do when this link is clicked...
// Cancel the default action
e.preventDefault();
});
@pranay: OP hat angegeben, dass er jQuery verwendet, um mit diesen Links zu arbeiten.
– BoltClock
15. Juli 2010 um 5:40 Uhr
Anstatt false zurückzugeben, führen Sie ein event.preventDefault() aus. Dies ist für die Personen, die Ihren Code lesen, klarer.
– RvdK
15. Juli 2010 um 6:06 Uhr
@PoweRoy: Verstanden. Ich habe die Bearbeitung vorgenommen und etwas Neues gelernt 🙂
– BoltClock
15. Juli 2010 um 6:24 Uhr
@BoltClock Das OP sollte Schaltflächen verwenden, um die Klickereignisse anstelle von Ankern zu verarbeiten. Ihre Antwort ist ziemlich nützlich, aber in dem Fall, wenn href irgendwo hinzeigt und Sie die Weiterleitung nicht benötigen im Augenblick. Das Verhindern von Fehlverhalten von überhaupt nicht benötigten Handlungen ist eine Art Ratschlag wie: Nimm das Messer, greife die Klinge und hämmere die Nägel mit dem Griff ein 🙂 Nimm ein richtiges Werkzeug für den Job!
– nimmthin
15. Juli 2010 um 7:14 Uhr
Wenn jquery: $('a[href=#]').click(function(e) { e.preventDefault(); });
Ich bin mir nicht sicher, ob es ein besserer Weg ist, aber es ist ein Weg 🙂
Diese Methode war für Prä-HTML 4 in Ordnung, aber heute ist sie sehr schlecht, da sie zu viele Navigationsaktionen wie “Link in neuem Tab öffnen” unterbricht.
– Steve-o
15. Juli 2010 um 7:20 Uhr
Sie haben vielleicht Recht, aber … in diesem Fall spielt es keine Rolle, weil er ein Onclick-Ereignis gibt, also würde das Öffnen des Links in einem neuen Tab sowieso nicht funktionieren …
– Typ Schaller
15. Juli 2010 um 8:48 Uhr
Abkürzung ist href='javascript:;' aber seien Sie vorsichtig, es löst das Ereignis window.beforeUnload im IE aus
– Michir
20. Mai 2016 um 7:22 Uhr
Dies könnte seine eigene Funktion unterbrechen? Denn wenn ich das mache, wird meine Funktion zum Rendern von Folien nicht mehr ausgelöst.
Benutz einfach <input type="button" /> anstatt <a> und verwenden Sie CSS, um es so zu gestalten, dass es wie ein Link aussieht, wenn Sie möchten.
Schaltflächen werden speziell zum Klicken erstellt und benötigen keine href-Attribute.
Der beste Weg ist, die Onload-Aktion zu verwenden, um die Schaltfläche zu erstellen und sie an der gewünschten Stelle über Javascript anzufügen, sodass sie bei deaktiviertem Javascript überhaupt nicht angezeigt werden und den Benutzer nicht verwirren.
Wenn Sie verwenden href="#" Sie erhalten unzählige verschiedene Links, die auf denselben Ort verweisen, was nicht funktioniert, wenn der Agent kein JavaScript unterstützt.
Duplikat von stackoverflow.com/questions/720970/jquery-hyperlinks-href-value/…
– Bogdan Constantinescu
15. Juli 2010 um 6:59 Uhr
Ich bin hier mit David Dorward und Gargantaun in der verknüpften doppelten Frage. Wenn Sie Links auf Ihrer Website haben, müssen diese wie normale Links funktionieren. Wenn JavaScript sie abfängt und etwas anderes macht, schön und gut, aber Sie müssen dort einen echten Link haben, der zu einer echten Seite führt. Dies ist aus allen möglichen Gründen notwendig, nicht zuletzt aus SEO und Zugänglichkeit.
– Daniel Priden
15. Juli 2010 um 7:11 Uhr
“Dumm ist wer dummes tut” Wir waren alle schon einmal dort 🙂
– nimmthin
15. Juli 2010 um 12:24 Uhr