Ich habe einen Throbber, der angezeigt werden soll, wenn ein Benutzer auf einen Link klickt.
Das Problem ist, dass derselbe Link angeklickt und gezogen werden kann, um neu angeordnet zu werden. In diesem Fall würde ich den Throbber nicht brauchen, um zu erscheinen. Es muss nur erscheinen, wenn es tatsächlich darauf wartet, irgendwohin zu gehen.
Wie kann ich mit jQuery einen Ereignis-Listener erstellen, bei dem ein Throbber nur angezeigt wird, wenn ein Klick auf einen Link und kein Klicken und Ziehen erfolgt?
Antworten:
Starten Sie beim Mousedown den Status. Wenn das Mousemove-Ereignis ausgelöst wird, zeichnen Sie es auf. Überprüfen Sie schließlich beim Mouseup, ob sich die Maus bewegt hat. Wenn es sich bewegt hat, haben wir gezogen. Wenn wir nicht umgezogen sind, ist es ein Klick.
Hier ist eine Demo: http://jsfiddle.net/W7tvD/1399/
quelle
mousemove
auch ohne Bewegung noch mindestens einmal ausgelöst wird.mouseup
Daher habe ich sie geändert, um die Variable bei Bewegung zu erhöhen und dann auf jsfiddle.net/W7tvD/1649 nach einem bestimmten Schwellenwert zu suchen Funktioniert jetzt wie ein Zauber für mich, danke!Aus irgendeinem Grund funktionierten die oben genannten Lösungen bei mir nicht. Ich ging mit folgendem:
Sie können das Entfernungslimit nach Belieben anpassen oder sogar auf Null setzen.
quelle
sqrt
ist nicht langsam und wirkt sich nicht auf UX aus, auch wenn Sie es hunderte Male getan haben.Mit jQuery UI machen Sie das einfach!
quelle
Diese Lösung verwendet die Funktionen "Ein" und "Aus", um ein Mousemove-Ereignis zu binden (Binden und Entbinden sind veraltet). Sie können auch die Änderung der x- und y-Positionen der Maus zwischen zwei Mausbewegungsereignissen erkennen.
quelle
Versuchen Sie Folgendes: Es wird angezeigt, wann der Status "Ziehen" angezeigt wird. ;) Geigenlink
quelle
Ich bin von der akzeptierten Antwort abgezweigt, um nur zu laufen, wenn der Klick nach unten gedrückt und gezogen wird .
Meine Funktion lief, als ich die Maus nicht gedrückt hielt. Hier ist der aktualisierte Code, wenn Sie diese Funktionalität auch möchten:
quelle
Für diesen einfachsten Weg ist Touch Start, Touch Move und Touch End. Das funktioniert sowohl für den PC als auch für das Touch-Gerät. Überprüfen Sie dies einfach in der jquery-Dokumentation und hoffen Sie, dass dies die beste Lösung für Sie ist. Viel Glück
quelle
jQuery-Plugin basierend auf der Antwort von Simen Echholt. Ich nannte es Single Click.
In Benutzung:
^^
quelle
Stellen Sie sicher, dass Sie das ziehbare Attribut des Elements auf false setzen, damit beim Abhören von Mouseup-Ereignissen keine Nebenwirkungen auftreten:
Dann können Sie jQuery verwenden:
quelle
Sie müssen einen Timer einstellen. Wenn der Timer abgelaufen ist, starten Sie den Throbber und registrieren Sie den Klick. Wenn Sie ziehen, löschen Sie den Timer, damit er nie abgeschlossen wird.
quelle
Wenn Sie jQueryUI verwenden, gibt es ein onDrag-Ereignis. Wenn nicht, hängen Sie Ihren Listener an mouseup () an und klicken Sie nicht auf ().
quelle
quelle
Sie müssen keine Variable einrichten, Sie können nur festlegen, ob sie sich im Datenattribut bewegt
quelle
Ich brauchte eine Funktion, die immer die Mausposition verfolgt und das Ziehen nach links, rechts, oben und unten erkennt. Es wird auch nicht beim Klicken ausgelöst, sondern muss mindestens 15 Pixel verschoben werden
quelle