Ich stieß auf eine ähnliche Situation, in der ich Ereignisse an die Mauseintritt/Mausausausstieg/Klick-Zustände eines Elements gebunden hatte, doch auf einem iPhone musste der Benutzer doppelt auf das Element klicken, um zuerst das Mauseintritt-Ereignis auszulösen und dann erneut, um das Klick-Ereignis auszulösen.
Ich löste dies mit einer ähnlichen Methode wie oben, aber ich nutzte das jQuery $.browser-Plugin (für jQuery 1.9>) und fügte ein .trigger-Ereignis für das Mouseenter-Bindungsereignis, wie folgt:
// 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
});
Der .trigger verhindert, dass das Element doppelt angeklickt werden muss, indem der .click-Eventhandler bei der Eingabe mit der Maus (oder dem ersten Klick) des Elements ausgelöst wird, wenn es auf iPhones oder iPads angezeigt wird. Es ist vielleicht nicht die eleganteste Lösung, aber sie funktioniert in meinem Fall hervorragend und nutzt ein Plugin, das ich bereits installiert hatte, und ich musste nur eine einzige Codezeile hinzufügen, um meine bestehenden Ereignisse auf diesen Geräten zu aktivieren.
Sie können das jQuery $.browser Plugin hier erhalten: https://github.com/gabceb/jquery-browser-plugin