Gibt es etwas in jquery, mit dem ich zwischen Doppelklick- und Einzelklickverhalten unterscheiden kann?
Wenn ich beide an dasselbe Element binde, wird nur der einzelne Klick ausgeführt.
Gibt es eine Möglichkeit, einige Zeit zu warten, bevor der einzelne Klick ausgeführt wird, um festzustellen, ob der Benutzer erneut klickt oder nicht?
Vielen Dank :)
jquery
jquery-selectors
kritya
quelle
quelle
Antworten:
Ich stellte fest, dass John Stricklers Antwort nicht ganz das tat, was ich erwartet hatte. Sobald die Warnung durch einen zweiten Klick innerhalb des Zwei-Sekunden-Fensters ausgelöst wird, löst jeder nachfolgende Klick eine weitere Warnung aus, bis Sie zwei Sekunden warten, bevor Sie erneut klicken. Bei Johns Code fungiert ein Dreifachklick als zwei Doppelklicks, bei denen ich erwarten würde, dass er sich wie ein Doppelklick gefolgt von einem einzelnen Klick verhält.
Ich habe seine Lösung überarbeitet, um auf diese Weise zu funktionieren und auf eine Weise zu fließen, die mein Verstand besser verstehen kann. Ich habe die Verzögerung von 2000 auf 700 gesenkt, um besser zu simulieren, was ich als normale Empfindlichkeit empfinde. Hier ist die Geige: http://jsfiddle.net/KpCwN/4/ .
Danke für die Gründung, John. Ich hoffe, diese alternative Version ist für andere nützlich.
quelle
.on()
Sie jetzt über beide$("document").on("click","a" function(e){
stattdessen in Zeile 5. Dieses Konstrukt ersetzt die veraltetedelegate()
Verwendung. Anstelle vondocument
können / sollten Sie jedes übergeordnete Objekt desa
DOM so weit wie möglich verwenden, das über die Zeit bestehen bleibt.Die von "Nott Responding" gegebene Lösung scheint beide Ereignisse auszulösen, klicken und doppelklicken, wenn Sie doppelt klicken. Ich denke jedoch, dass es in die richtige Richtung weist.
Ich habe eine kleine Änderung vorgenommen, dies ist das Ergebnis:
Versuch es
http://jsfiddle.net/calterras/xmmo3esg/
quelle
Sicher, binden Sie zwei Handler, einen an
click
und den anderen andblclick
. Erstellen Sie eine Variable, die bei jedem Klick inkrementiert wird. wird dann nach einer eingestellten Verzögerung zurückgesetzt. Innerhalb der setTimeout-Funktion können Sie etwas tun ...quelle
Sie könnten wahrscheinlich Ihre eigene benutzerdefinierte Implementierung von click / dblclick schreiben, damit diese auf einen zusätzlichen Klick wartet. Ich sehe in den jQuery-Kernfunktionen nichts, was Ihnen dabei helfen könnte.
Zitat aus .dblclick () auf der jQuery-Site
Es wird nicht empfohlen, Handler für dasselbe Element an die Ereignisse click und dblclick zu binden. Die Reihenfolge der ausgelösten Ereignisse variiert von Browser zu Browser, wobei einige zwei Klickereignisse vor dem dblclick empfangen und andere nur eines. Die Doppelklickempfindlichkeit (maximale Zeit zwischen Klicks, die als Doppelklick erkannt wird) kann je nach Betriebssystem und Browser variieren und ist häufig vom Benutzer konfigurierbar.
quelle
Schauen Sie sich den folgenden Code an
Demo geht hier http://jsfiddle.net/cB484/
quelle
Ich habe ein jQuery-Plugin geschrieben, mit dem auch die Click- und Dblclick-Ereignisse delegiert werden können
quelle
$("body").multipleClicks('#mySelector', function(){ /* do something on click */},function(){/* do something on doubleclick */},300);
quelle
Ich implementiere diese einfache Lösung, http://jsfiddle.net/533135/VHkLR/5/
HTML-Code
Skriptcode
Es ist nicht viel nachlässig
quelle
Diese Lösung funktioniert bei mir
quelle
Ich habe hier einige Änderungen an den obigen Antworten vorgenommen, die immer noch hervorragend funktionieren: http://jsfiddle.net/arondraper/R8cDR/
quelle
Und schließlich verwenden wir als.
quelle
Entspricht der obigen Antwort, ermöglicht jedoch einen Dreifachklick. (Verzögerung 500) http://jsfiddle.net/luenwarneke/rV78Y/1/
quelle
Dies ist eine Methode, die Sie mit dem grundlegenden JavaScript ausführen können, das für mich funktioniert:
quelle
Unten ist meine einfache Herangehensweise an das Problem.
JQuery-Funktion:
Implementierung:
Überprüfen Sie das angeklickte Element in Firefox / Chrome, um festzustellen, ob die Datenklicks beim Klicken auf und ab gehen. Passen Sie die Zeit (1000) entsprechend an.
quelle