Czy jest coś w jquery, co pozwoliłoby mi odróżnić zachowanie po dwukrotnym kliknięciu od pojedynczego kliknięcia?
Kiedy powiążę oba z tym samym elementem, wykonywane jest tylko jedno kliknięcie.
Czy istnieje sposób, w jaki trzeba czekać jakiś czas przed wykonaniem pojedynczego kliknięcia, aby sprawdzić, czy użytkownik kliknie ponownie, czy nie?
Dzięki :)
jquery
jquery-selectors
kritya
źródło
źródło
Odpowiedzi:
Okazało się, że odpowiedź Johna Stricklera nie do końca spełniła moje oczekiwania. Gdy alert zostanie uruchomiony przez drugie kliknięcie w dwusekundowym oknie, każde kolejne kliknięcie wyzwala kolejny alert do momentu odczekania dwóch sekund przed ponownym kliknięciem. Tak więc w przypadku kodu Johna potrójne kliknięcie działa jak dwa podwójne kliknięcia, w przypadku których spodziewałbym się, że będzie działać jak podwójne kliknięcie, po którym następuje jedno kliknięcie.
Przepracowałem jego rozwiązanie, aby działało w ten sposób i płynęło w sposób, który mój umysł może lepiej zrozumieć. Zmniejszyłem opóźnienie z 2000 do 700, aby lepiej zasymulować to, co czułbym jako normalną czułość. Oto skrzypce: http://jsfiddle.net/KpCwN/4/ .
Dzięki za fundację, John. Mam nadzieję, że ta alternatywna wersja będzie przydatna dla innych.
źródło
.on()
teraz obu$("document").on("click","a" function(e){
zamiast tego w linii 5. Ta konstrukcja zastępuje przestarzałedelegate()
użycie. Zamiast tegodocument
możesz / powinieneś używać dowolnego obiektu nadrzędnego wa
dół DOM, o ile to możliwe, który utrzymuje się przez czas.Rozwiązanie podane w „Nott Responding” wydaje się uruchamiać oba zdarzenia, kliknięcie i dwukrotne kliknięcie po dwukrotnym kliknięciu. Myślę jednak, że wskazuje to we właściwym kierunku.
Zrobiłem małą zmianę, oto wynik:
Spróbuj
http://jsfiddle.net/calterras/xmmo3esg/
źródło
Jasne, zwiąż dwóch przewodników, jednego do,
click
a drugiego dodblclick
. Utwórz zmienną, która zwiększa się z każdym kliknięciem. następnie resetuje się po określonym czasie. Wewnątrz funkcji setTimeout możesz coś zrobić ...źródło
Prawdopodobnie mógłbyś napisać własną niestandardową implementację click / dblclick, aby czekała na dodatkowe kliknięcie. Nie widzę niczego w podstawowych funkcjach jQuery, które pomogłyby ci to osiągnąć.
Cytat z .dblclick () w witrynie jQuery
Nie zaleca się wiązania programów obsługi zarówno ze zdarzeniami click, jak i dblclick dla tego samego elementu. Sekwencja wyzwalanych zdarzeń różni się w zależności od przeglądarki, przy czym niektóre otrzymują dwa zdarzenia kliknięcia przed dblclick, a inne tylko jedno. Czułość dwukrotnego kliknięcia (maksymalny czas między kliknięciami wykrywanymi jako podwójne kliknięcie) może się różnić w zależności od systemu operacyjnego i przeglądarki i często jest konfigurowalna przez użytkownika.
źródło
Spójrz na poniższy kod
Wersja demonstracyjna jest dostępna tutaj http://jsfiddle.net/cB484/
źródło
Napisałem wtyczkę jQuery, która pozwala również na delegowanie zdarzeń click i dblclick
źródło
$("body").multipleClicks('#mySelector', function(){ /* do something on click */},function(){/* do something on doubleclick */},300);
źródło
wdrażam to proste rozwiązanie, http://jsfiddle.net/533135/VHkLR/5/
kod html
kod skryptu
jego nie jest dużo opóźniony
źródło
To rozwiązanie działa u mnie
źródło
Wprowadziłem tutaj pewne zmiany w powyższych odpowiedziach, które nadal działają świetnie: http://jsfiddle.net/arondraper/R8cDR/
źródło
I wreszcie używamy jako.
źródło
Taka sama jak powyższa odpowiedź, ale umożliwia potrójne kliknięcie. (Opóźnienie 500) http://jsfiddle.net/luenwarneke/rV78Y/1/
źródło
Jest to metoda, którą możesz zrobić za pomocą podstawowego JavaScript, który działa dla mnie:
źródło
Poniżej moje proste podejście do problemu.
Funkcja JQuery:
Realizacja:
Sprawdź kliknięty element w przeglądarce Firefox / Chrome, aby zobaczyć, jak kliknięcia danych rosną i maleją po kliknięciu, dostosuj czas (1000) do potrzeb.
źródło