Как заменить 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. Как нет курсора он не имеет никакого визуального воздействия