21 Stimmen

jquery toggle: Klick auf Link springt zurück zum Anfang der Seite

Ich habe ein Jquery-Toggle erstellt, aber wenn ich auf den Link klicke, um ein Div zu öffnen, springt es an den Anfang der Seite. wie kann ich das beheben?

Ich weiß, dass ich den Link durch etwas anderes ersetzen könnte, aber ich muss den Benutzern klar machen, dass es sich um einen Link handelt und dass sie darauf klicken können.

40voto

user113716 Punkte 309387

Hinzufügen return false; an das Ende des Codes, der beim Anklicken des Links ausgeführt wird.

$('a.myLink').toggle(function() {
    // run my code
    return false;
});

Alternativ können Sie auch die event Objekt, und rufen Sie .preventDefault() .

$('a.myLink').toggle(function(event) {
    event.preventDefault();
    // run my code
});

Mit diesen beiden Methoden wird das Standardverhalten der Verknüpfung deaktiviert.

Die erste Option verhindert auch das Blubbern des Ereignisses, also verwenden Sie sie nur, wenn Sie das Blubbern des Ereignisses nicht nutzen müssen.

3voto

Will Morgan Punkte 4355

Das liegt daran, dass es eine Standardaktion gibt, die mit Elementen wie Links, Kontrollkästchen, Optionsfeldern usw. verbunden ist. Sie können sie wie folgt aufheben:

$('a.mylink').click(function(ev) { // Pass in the event object to your function
    // do stuff
    ev.preventDefault();
    return false;
});

Weitere Informationen finden Sie hier: http://api.jquery.com/event.preventDefault/

In dem seltenen Fall, dass Sie einen Event-Handler an ein Kind eines Links anhängen möchten, sollten Sie auch event.stopPropagation() um zu verhindern, dass das Ereignis im DOM auftaucht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X