Я столкнулся с подобной ситуацией, когда у меня были события, связанные с состояниями mouseenter / mouseleave / click элемента, но на iPhone пользователю пришлось дважды щелкнуть элемент, чтобы сначала вызвать событие mouseenter, а затем снова запуститьсобытие click.
Я решил эту проблему, используя метод, аналогичный описанному выше, но я использовал плагин jQuery $ .browser (для jQuery 1.9>) и добавил событие .trigger к событию привязки mouseenter, так какследует:
// mouseenter event
$('.element').on( "mouseenter", function() {
// insert mouseenter events below
// double click fix for iOS and mouseenter events
if ($.browser.iphone || $.browser.ipad) $(this).trigger('click');
});
// mouseleave event
$('.element').on( "mouseleave", function() {
// insert mouseout events below
});
// onclick event
$('.element').on( "click", function() {
// insert click events below
});
.trigger предотвращает необходимость двойного щелчка по элементу, вызывая обработчик событий .click при вводе мыши (или начальном щелчке) элемента при просмотре на iPhone или iPad.Возможно, это не самое элегантное решение, но оно отлично работает в моем случае и использует плагин, который у меня уже был, и потребовал, чтобы я добавил одну строку кода, чтобы мои существующие события работали на этих устройствах.
Вы можете получить плагин jQuery $ .browser здесь: https://github.com/gabceb/jquery-browser-plugin