Mam pulsujący, który pojawia się, gdy użytkownik kliknie link.
Problem polega na tym, że ten sam link można kliknąć i przeciągnąć, aby zmienić jego kolejność. W tym przypadku nie potrzebowałbym, aby pojawił się pulsujący. Musi się pojawić tylko wtedy, gdy faktycznie czeka, aby gdzieś iść.
Jak mogę za pomocą jQuery stworzyć nasłuchiwanie zdarzeń, które pozwoliłoby na pojawienie się pulsującego tylko wtedy, gdy jest to kliknięcie do linku , a nie kliknięcie i przeciągnięcie?
Odpowiedzi:
Przy wyciąganiu kursora zacznij ustawiać stan, jeśli zdarzenie mousemove zostanie uruchomione, nagraj je, a na końcu po najechaniu myszą sprawdź, czy mysz się poruszyła. Jeśli się poruszył, przeciągnęliśmy. Jeśli się nie ruszyliśmy, to kliknięcie.
Oto demo: http://jsfiddle.net/W7tvD/1399/
źródło
mousemove
nadal będą odpalane przynajmniej raz, nawet bez żadnego ruchu, więc zmieniłem to, aby zwiększać zmienną przy ruchu, a następnie sprawdzałem pewien próg namouseup
jsfiddle.net/W7tvD/1649 Teraz działa jak urok, dzięki!Z jakiegoś powodu powyższe rozwiązania nie działały u mnie. Poszedłem z następującymi:
Możesz dostosować limit odległości do cokolwiek zechcesz, a nawet sprowadzić go do zera.
źródło
sqrt
nie jest powolny i nie wpłynie na UX, nawet jeśli zrobiłeś to setki razy.Dzięki interfejsowi jQuery po prostu zrób to!
źródło
To rozwiązanie korzysta z funkcji „on” i „off” w celu powiązania zdarzenia „unbind” ze zdarzeniem mousemove (powiązanie i rozłączenie są przestarzałe). Możesz również wykryć zmianę pozycji x i y myszy między dwoma zdarzeniami przesunięcia myszy.
źródło
Spróbuj tego: pokazuje, kiedy jest „przeciągnięty”. ;) link skrzypcowy
źródło
Odłączyłem się od zaakceptowanej odpowiedzi, by biec tylko wtedy, gdy kliknięcie jest HELD w dół i przeciągane .
Moja funkcja działała, gdy nie przytrzymywałem myszy. Oto zaktualizowany kod, jeśli chcesz również skorzystać z tej funkcji:
źródło
Najprostszy sposób to start dotykowy, ruch dotykowy i koniec dotykowy. To działa zarówno na komputerze, jak i urządzeniu dotykowym, po prostu sprawdź to w dokumentacji jQuery i miej nadzieję, że jest to najlepsze rozwiązanie dla Ciebie. powodzenia
źródło
Wtyczka jQuery oparta na odpowiedzi Simena Echholta. Nazwałem to jednym kliknięciem.
W użyciu:
^^
źródło
Upewnij się, że ustawiłeś atrybut draggable elementu na false, aby nie mieć efektów ubocznych podczas słuchania zdarzeń mouseup:
Następnie możesz użyć jQuery:
źródło
Musisz ustawić minutnik. Kiedy licznik czasu wygaśnie, uruchom pulsator i zarejestruj kliknięcie. Kiedy wystąpi przeciąganie, wyczyść licznik czasu, aby nigdy się nie skończył.
źródło
Jeśli używasz jQueryUI - istnieje zdarzenie onDrag. Jeśli nie, to dołącz swój listener do mouseup (), a nie kliknij ().
źródło
źródło
Nie musisz ustawiać zmiennej, możesz po prostu ustawić, czy porusza się w atrybucie danych
źródło
Potrzebowałem funkcji, która zawsze śledzi pozycję myszy i wykrywa przeciąganie w lewo, w prawo, w górę i w dół. Nie uruchamia się również po kliknięciu, ale wymaga ruchu o co najmniej 15 pikseli
źródło