Link mit href=”#” scrollt Seite nach oben, wenn es mit jquery slidetoggle verwendet wird [duplicate]

Lesezeit: 2 Minuten

Benutzer-Avatar
Samojede

Mögliches Duplikat:

Wie verhindere ich, dass eine Webseite nach oben scrollt, wenn auf einen Link geklickt wird, der Javascript auslöst?

Ich verwende den Slidetoggle von jquery, um Divs anzuzeigen/auszublenden. Das Element, das das Gleiten steuert, ist ein Textlink (etwas Text innerhalb von <\a>), der href=”#” hat, sodass er wie ein Link aussieht (Unterstreichung, Cursoränderung).

das problem ist, dass beim anklicken des links zusätzlich zum gleiteffekt die seite nach oben scrollt.

Ich habe versucht, href=”#” durch href=”” zu ersetzen, aber das deaktiviert den Div-Show/Hide-Effekt. Ich denke, ich könnte das Tag Name=”somename” hinzufügen und dann das href auf href=”#somename” setzen, aber ich würde solche Tricks lieber nicht verwenden.

Warum scrollt href=”#” die Seite nach oben?

Irgendwelche Ideen würden sehr geschätzt

  • Du könntest einfach verwenden href="#id-of-choice" um die Seite zu einem Element mit zu verschieben id="id-of-choice"

    – Prageth Jayathissa

    30. Oktober 2021 um 6:39 Uhr

Benutzer-Avatar
zurück

Mehrere Möglichkeiten:

  1. Stellen return false; am Ende Ihres Click-Handlers und die href wird nicht befolgt.
  2. Ändern Sie die href in javascript:void(0);
  3. Anruf preventDefault auf das Ereignis in Ihrem Handler:

    function( e ) {
      e.preventDefault();
      // your event handling code
    }
    

  • danke euch allen für eure antworten. Ich habe return false verwendet und es funktioniert perfekt stackoverflow ist erstaunlich!

    – Samojeden

    8. Januar 2010 um 10:22 Uhr

  • Hervorragende Lösung, dannduks, hat mir viel Ärger erspart =)

    – Zo hat

    12. November 2010 um 9:38 Uhr

  • return false; ist NICHT der richtige Weg, damit umzugehen. So oft werfen Entwickler faul return false; am Ende ihrer Event-Handler, ohne die Konsequenzen dieser Aktion zu verstehen. Es gibt keinen Grund, die Ausbreitung des Ereignisses zu verhindern. Alles, was Sie hier tun müssen, ist, die Standardaktion des Benutzeragenten zu verhindern. So, preventDefault() ist hier die richtige Funktion.

    – Ray Nicholus

    21. November 2012 um 15:09 Uhr

  • Das hätte ich nicht gedacht 🙂

    – Andras

    1. Oktober 2013 um 10:05 Uhr

  • vielen herzlichen Dank! +1 für mehrere Optionen!!

    – normalerBenutzer

    17. April 2014 um 7:08 Uhr

Sie müssen hinzufügen return false; zu Ihrem Click-Handler.
Dadurch wird verhindert, dass der Browser die Standardaktion für den Klick ausführt.

return false oder event.preventDefault() sind das, was Sie in Ihrem Click-Event-Handler benötigen, um zu verhindern, dass die Standardaktion ausgeführt wird. Ein <a> Element mit a href von # bewirkt, dass das Browser-Ansichtsfenster als Standardaktion an den Anfang der Seite springt

Andere haben Ihnen Lösungen gegeben. Aber um deine Frage konkret zu beantworten, # verweist auf die aktuelle Seite. Und da ist die Interpretation von Tags zu bringen oben des Tags sichtbar machen, indem Sie auf a klicken # -Tag scrollt Sie zum Anfang der aktuellen Seite.

1158690cookie-checkLink mit href=”#” scrollt Seite nach oben, wenn es mit jquery slidetoggle verwendet wird [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy