2013-02-11 9 views
18

Mit jQuery verwende ich gerne mousedown und mouseup Ereignisse in Verbindung für drückbare Tasten.Was ist der Unterschied zwischen "Mausaufruf" und "Klick" -Ereignissen?

Allerdings habe ich in jedem Fall das mouseup Ereignis verwendet, das click Ereignis bindend schien stattdessen identische Ergebnisse zu produzieren.

Gibt es einen wesentlichen Unterschied zwischen den beiden folgenden Methoden?

// Method 1 
$('.myButton').bind('click', callback); 

// Method 2 
$('.myButton').bind('mouseup', callback); 

Bitte beachten Sie, ich bin eine technische Erklärung über die Unterschiede zwischen mit beiden Methoden zu suchen. Dies hat keine Beziehung zu der Frage, die als Betrogene markiert wurde: Differentiate click vs mousedown/mouseup

+1

@OneTrickPony Ich stimme nicht zu. Ich möchte den technischen Unterschied zwischen den beiden Ereignissen kennen und nicht feststellen, ob der Benutzer klickt und hält. – caiosm1005

+2

Denken Sie daran, dass Mausereignisse nicht auf gestenbasierten Geräten wie Ipads oder Mobiltelefonen funktionieren. –

+1

Melden sie wirklich, ohne beide Fragen sorgfältig zu lesen? Bitte öffnen Sie es erneut, es ist kein Betrogener. – caiosm1005

Antwort

42

Mit einem mouseup Ereignisse können Sie woanders auf dem Bildschirm klicken, halten Sie die Klick-Taste, nach unten und dem Zeiger auf Ihr mouseup Element zu bewegen, und dann den Mauszeiger loslassen.

Ein Klickereignis erfordert das mousedown- und mouseup-Ereignis für dieses Element.

Die normale Erwartung ist, dass ein Klick sowohl das mousedown- als auch mouseup-Ereignis erfordert, daher würde ich das click-Ereignis empfehlen.

Von dem möglichen Duplikat scheint es, dass Mouse Up- und Mousedown-Ereignisse auch durch andere Maustasten als die linke Maustaste ausgelöst werden können. Was sich sehr von dem unterscheidet, was ein generischer Benutzer erwarten würde.

+3

W3C empfiehlt die Verwendung von 'click' in den meisten Mausereignissen, wobei' click', 'mousedown' und' mouseup' die gewünschten Ergebnisse erzielen würden. Die letzten beiden existieren für zusätzliche Kontrolle bei Bedarf. –

+0

Rechnung nach meinen Tests scheint es, dass Klick kann auch mit jeder Maustaste ausgelöst werden. Siehe http://jsfiddle.net/zRr4s/84/ –

+2

Die mittlere Bildlaufschaltfläche der Maus kann auch Klickereignisse verursachen, wenn auf das Element geklickt wird. – jessica

0

Der größte Unterschied, der die Art und Weise beeinflusst, die ich code; ist die click event auf einer a tag ist verantwortlich für die Änderung der URL. Das mousedown- oder mouseup-Ereignis wird dies erreichen

1

Mein Verständnis ist, dass "Klick" viele Komplexitäten verbirgt (z. B. sicherstellen, dass Mousedown/up auf dem gleichen Element auftreten, Abbrechen mit ESC/Rechtsklick). Mit "Klick" über "mousedown/up" sollte bevorzugt werden.

Ein Szenario, bei dem "Klicken" nicht zu funktionieren scheint, wenn die App den Inhalt sehr oft so aktualisiert, dass zugrunde liegende DOM-Elemente ersetzt werden. In diesem Fall wird "Klick" nicht ausgelöst und dies kann zu einer schlechten Kundenerfahrung führen.

Verwandte Themen