Как заменить click на touchstart на устройствах iOS
цель
чтобы закрыть Родительский div тега привязки при нажатии. В приведенном ниже коде я хочу скрыть div performance_tt когда пользователь нажимает на якорь тег close_performance_tt.
3 ответов
определите clickhandler, который вы можете использовать позже:
var clickHandler = ('ontouchstart' in document.documentElement ? "touchstart" : "click");
$("a").bind(clickHandler, function(e) {
alert("clicked or tapped. This button used: " + clickHandler);
});
это вызовет щелчок на устройствах без касания и touchstart на сенсорных устройствах.
когда это будет сказано, я настоятельно рекомендую использовать быстро нажмите кнопку вместо этого и использовать регулярные click-события. С вышеуказанным решением вы вызовете "touchstart" по ссылкам, когда вы проводите по нему, чтобы прокрутить страницу, например, - что не идеально.
в iOs a
тег является кликабельным элементом, поэтому прикосновение к ссылке вызовет события мыши (включая click
).
код
$("#close_performance_tt").bind('click',function() {
alert('Click event triggered');
});
будет отлично работать на iOs.
для получения дополнительной информации: http://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html
см.http://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
для событий мыши iOS, таких как click do not bubbe, если:
- целевым элементом события является ссылка или поле формы.
- целевой элемент или любой из его предков до, но не включая, имеет явный обработчик событий, установленный для любого из событий мыши. Этот обработчик событий может быть пустой функцией.
- целевой элемент или любой из его предки до и в том числе документ имеет курсор: указатель CSS объявления.
самое простое решение для меня-применить cursor: pointer
везде, если это сенсорное устройство iOS. Как нет курсора он не имеет никакого визуального воздействия