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