Ich habe HTML und jQuery, die ein div
Auf und Ab verschieben, um es anzuzeigen oder auszublenden, wenn auf einen Link geklickt wird:
<ul class="product-info">
<li>
<a href="#">YOU CLICK THIS TO SHOW/HIDE</a>
<div class="toggle">
<p>CONTENT TO SHOW/HIDE</p>
</div>
</li>
</ul>
$('div.toggle').hide();
$('ul.product-info li a').click(function(event){
$(this).next('div').slideToggle(200);
}
Meine Frage lautet: Wie kann ich verhindern preventDefault()
, dass der Link als Link fungiert und am Ende meiner URL "#" hinzufügt und an den Anfang der Seite springt?
Ich kann die richtige Syntax nicht herausfinden, ich bekomme immer wieder eine Fehlermeldung
PreventDefault () ist keine Funktion.
javascript
jquery
Chris J Allen
quelle
quelle
href
Attribut von anchor tag (a
) darf nicht leer sein ... Aber wir können es auf setzenjavascript:<code-here>
, das ist legal / gültig. Wir geben dann<code-here>
nur eine leere Anweisung ein, indem wir ein Semikolon hinzufügen. Auf diese Weise macht der Link nichts.Es wird empfohlen, dass Sie nicht verwenden
return false
, da 3 Dinge als Ergebnis auftreten:In solchen Situationen sollten Sie also wirklich nur verwenden
event.preventDefault();
Archiv des Artikels - jQuery-Ereignisse: Stop (Mis) Using Return False
quelle
Alternativ können Sie vom Klickereignis auch einfach false zurückgeben:
Das würde verhindern, dass der A-Href ausgelöst wird.
Beachten Sie jedoch aus Gründen der Benutzerfreundlichkeit in einer idealen Welt, dass href immer noch irgendwohin gehen sollte, für die Leute, die einen Link in einem neuen Tab öffnen möchten;)
quelle
Dies ist eine Nicht-JQuery-Lösung, die ich gerade getestet habe und die funktioniert.
quelle
Verwenden
quelle
href="javascript:// Send Email"
Ein weiterer Weg , dies in Javascript zu tun mit
inline onclick
,IIFE
,event
undpreventDefault()
:quelle
<a href='#' onclick="event.preventDefault()">Click Me</a>
Nach mehreren Vorgängen können Sie Folgendes tun, wenn die Seite endgültig verlinkt werden soll:
quelle
preventDefault
und dann die Standardaktion selbst ausführen? Tun Sie einfach, was Sie hinzufügen müssen, und lassen Sie die Standardeinstellung weiterhin bestehen.Warum nicht einfach in CSS?
Entfernen Sie das Attribut 'href' in Ihrem Ankertag
In Ihrem CSS,
quelle
Wenn Sie das Stoppen der Weitergabe des Ereignisses nicht stört, verwenden Sie einfach
am Ende Ihres Handlers. In jQuery wird das Standardverhalten verhindert und das Sprudeln des Ereignisses gestoppt.
quelle
Sie können
return false;
den Ereignisaufruf verwenden, um die Ereignisausbreitung zu stoppen. Er verhält sich wie einevent.preventDefault();
Negieren. Oder Sie können dasjavascript:void(0)
Attribut href verwenden, um den angegebenen Ausdruck auszuwerten und dannundefined
zum Element zurückzukehren.Rückgabe des Ereignisses beim Aufruf:
Leerer Fall:
Weitere Informationen finden Sie unter: Wie wirkt sich das Hinzufügen von void (0) für href und 'return false' auf den Listener für Klickereignisse des Ankertags aus?
quelle