2013-02-11 3 views
18

Использование jQuery, мне часто нравится использовать mousedown и mouseup событиями в соединении для кнопок с кнопками.В чем разница между событиями «mouseup» и «click»?

Однако в каждом случае я использовал событие mouseup, вместо этого привязка события click, похоже, давала идентичные результаты.

Есть ли существенная разница между двумя способами ниже?

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

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

Пожалуйста, обратите внимание, что я ищу техническое объяснение о различиях между обоими методами. Это не имеет никакого отношения к вопросу, который был помечен как простофиля: Differentiate click vs mousedown/mouseup

+1

@OneTrickPony Я не согласен. Я хочу знать техническую разницу между этими двумя событиями, а не обнаруживать, что пользователь нажимает и удерживает. – caiosm1005

+2

Помните, что события мыши не работают на устройствах на основе жестов, таких как Ipads или мобильные телефоны. –

+1

Неужели они действительно отмечают, даже не внимательно прочитав оба вопроса? Пожалуйста, откройте его, это не обман. – caiosm1005

ответ

42

С событием MouseUp, вы можете нажать где-то на экране, удерживая нажатой кнопку мыши, а переместить указатель на свой MouseUp элемент, а затем отпустите указатель мыши.

Событие клика требует, чтобы событие mousedown и mouseup происходило на этом элементе.

Нормальное ожидание состоит в том, что для щелчка требуется как событие mousedown, так и mouseup, поэтому я рекомендую событие click.

Из возможных дубликатов видно, что события mouseup и mousedown также могут быть вызваны кнопками мыши, кроме кнопки левого щелчка. Это очень отличается от того, что ожидал бы общий пользователь.

+3

W3C рекомендует использовать 'click' в большинстве событий мыши, где' click', 'mousedown' и' mouseup' будут достигать желаемых результатов. Последние два существуют для дополнительного контроля, когда это необходимо. –

+0

Билл согласно моим тестам кажется, что щелчок также может быть запущен любой кнопкой мыши. См. Http://jsfiddle.net/zRr4s/84/ –

+2

Кнопка средней прокрутки мыши также может вызывать события щелчка при нажатии над элементом. – jessica

0

Самая большая разница, которая влияет на способ кодирования; является click event на a tag отвечает за изменение URL-адреса. Событие mousedown или mouseup достигнет этого

1

Я понимаю, что «щелчок» скрывает множество сложностей (например, убедитесь, что mousedown/up происходит на одном и том же элементе, отмена с помощью ESC/щелкните правой кнопкой мыши). Рекомендуется использовать «щелчок» над «mousedown/up».

Один сценарий, в котором «щелчок» не работает, когда приложение обновляет контент очень часто таким образом, что элементы DOM заменяются. В этом случае «щелчок» не будет запущен, и это может привести к плохой работе с клиентами.

Смежные вопросы