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