Gibt es eine Möglichkeit, Standardereignisse zu verhindern und sie dann erneut mit jQuery auszulösen?
Grundsätzlich habe ich ein Anker-element, <a href='bla..'>link</a>
Klicken, möchte ich zunächst etwas zu tun, und nur, sobald es fertig ist, will ich die user auf die Seite zu verlinken. So etwas wie:
$('a').click(function(ev){
ev.preventDefault();
//do something here
ev.refireDefault();
});
Irgendwelche Vorschläge? Danke!
EDIT: Meine Entschuldigung! Mein FireFox entschieden cache der vorherigen version von JS, also nichts, was ich versuchte arbeitete, bis ein einfaches STRG+F5 das Problem gelöst. Danke Euch allen für Eure Antworten. Ich gab +1 auf alle, die sagte, dass preventDefault()
ist nicht erforderlich und wählte Scotts Antwort, da hatte er die kleinste Zahl von Punkten. Ich hoffe, das ist fair.
Kommentar zu dem Problem
wirklich eine gute Frage. +1
@Ron und die anderen, die hierher kommen, weil der Titel, ist so etwas wie this das, was du suchst? Hoffentlich eine Antwort kommen wird
InformationsquelleAutor der Frage Dimskiy | 2011-05-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Javascript ist nicht multi-threaded. Es ist event-gesteuert und Veranstaltungen Feuer in der Reihenfolge in der Sie geladen werden. Daher, wenn Sie einfach weglassen, die
ev.preventDefault()
im click-Ereignis insgesamt, es wird nicht ausgelöst, die Standard-Aktion, bis die Funktion beendet wird.Siehe jsFiddle hier
EDIT pro @Greg ' s Kommentar:
Ist das einzige Szenario, in dem die oben genannten Punkte nicht zutrifft, ist mit asynchronen Funktionen. In diesem Szenario würden Sie wollen, um zu verhindern, dass die default-Aktion und dann in die asynchrone callback-Funktion, re-Brand ist die Standard-Aktion.
InformationsquelleAutor der Antwort Code Maverick
preventDefault markiert das Ereignis als behandelt, so dass, wenn Sie Ihre Klick-Funktion vorhanden, wird die Standard-Aktion wird nicht genommen. Wenn Sie nicht preventDefault dann das Standard-Klick-Aktion wird nicht aufgerufen, bis die click-Funktion beendet. So entfernen Sie es und es wird funktionieren wie Sie es vorschlagen.
InformationsquelleAutor der Antwort Lazarus
Der link nicht gehen, bis, nachdem die Arbeit getan ist, so dass Sie tun können:
InformationsquelleAutor der Antwort Dustin Laine
nachdem Sie Ihre gewünschte Aktion aus, warum Sie nicht einfach umleiten, um die Seite durch hinzufügen dieser Zeile:
InformationsquelleAutor der Antwort Safran Ali
Es getan werden kann, wie diese:
1) Die onclick werden muss vor die href.
2) return true; stellt sicher, dass Benutzer getroffen werden, um zu der verknüpften Seite, die nach Ihren JS code ausgeführt wird. Wenn Sie
return false;
- linked selbst wird nicht funktionieren, es wird nur Feuer Ihre JavaScript auf Klick;InformationsquelleAutor der Antwort Dmitriy Naumov