Какая разница между событиями "mouseup" и 'click'?
Используя jQuery, я часто предпочитаю использовать события mousedown
и mouseup
для нажатых кнопок.
Однако в каждом случае я использовал событие mouseup
, поэтому привязка события click
, казалось, давала идентичные результаты.
Есть ли существенная разница между двумя этими методами ниже?
// Method 1
$('.myButton').bind('click', callback);
// Method 2
$('.myButton').bind('mouseup', callback);
Обратите внимание, что я ищу техническое объяснение различий между использованием обоих методов. Это не имеет никакого отношения к вопросу, который был отмечен как обман: Дифференцировать клик против mousedown/mouseup
Ответы
Ответ 1
С помощью события mouseup вы можете щелкнуть в другом месте на экране, удерживать нажатой кнопку мыши и переместить указатель на элемент mouseup, а затем отпустить указатель мыши.
Событие с кликом требует, чтобы в этом элементе выполнялось событие mousedown и mouseup.
Обычное ожидание состоит в том, что для клика требуется как событие mousedown, так и mouseup, поэтому я рекомендую событие click.
Из возможного дубликата видно, что события mouseup и mousedown также могут быть вызваны кнопками мыши, кроме кнопки левого щелчка. Это очень отличается от того, что ожидал общий пользователь.
Ответ 2
Я понимаю, что "click" скрывает множество сложностей (например, убедитесь, что mousedown/up происходит на одном и том же элементе, отменив ESC/щелчок правой кнопкой мыши). Использование "click" над "mousedown/up" должно быть предпочтительным.
Один сценарий, в котором "click", похоже, не работает, когда приложение обновляет контент очень часто таким образом, что заменяются элементы DOM. В этом случае "click" не будет запущен, и это может привести к плохой работе с клиентами.
Ответ 3
Самая большая разница, которая влияет на способ кодирования; click event
на a tag
отвечает за изменение URL-адреса. Событие mousedown, или mouseup достигнет этого