Не имея ни мыши, ни указателя, концепция наведения элементов экрана на экране не применима для сенсорных устройств. Со многими веб-сайтами, использующими навигацию по событиям JavaScript или другими целями, некоторые сенсорные устройства 1 реализуют mouseenter
, которые будут запускаться одним нажатием. Если обработчик событий также привязан к click
, это будет только поднято на втором касании элемента.
Так как функция jQuery hover()
внутренне использует mouseenter
и mouseleave
, элементы с регистрами hover()
и click()
требуют двух кранов для запуска последнего 2. Для многих случаев использования это именно то, что вы захотите. Тем не менее, в приложениях, где обработка hover()
добавляет акцент (всплывающую подсказку, свечение и т.д.) К нависшему элементу, может иметь смысл пропустить событие вместе со всеми сенсорными устройствами, перейдя к обработчику onclick
.
Я знаю, как слушать специально для событий touchstart
и touchend
, позволяя мне адаптировать сенсорный пользовательский интерфейс. Это правильное решение моей проблемы, но я надеюсь, что вокруг этого может быть "более простой" способ. Я представляю метод, похожий на hover()
в своей сигнатуре, только реализованный таким образом, который только прикрепляет предоставленные обработчики событий к устройствам без касания.
Есть ли у jQuery такой метод? Любые плагины? Или я что-то не замечаю здесь?
1 Поведение подтверждено на iPad, iPhone и нескольких телефонах Android.
2 Запустите эту JsFiddle demo на рабочем столе и сенсорном устройстве, чтобы увидеть, о чем я говорю.