如何使我的“点击”function与iOS的工作

我有一组button作为button。 这些button有一个简单的jquery click()函数,适用于除iOS以外的所有浏览器。

例如:

<div class="button">click me</div> 

 $('.button').click(function(){ alert('hi'); }); 

我不知道为什么这不适用于iOS – 显然iOS中没有“点击”。

不幸的是,我没有iphone设备来自己testing,但我收到了很多来自我的客户的抱怨,他们想要点击事物,什么也没有发生。

什么是这个工作的关键?

单击 “:”表示在同一个元素上发生了mousedown和mouseup事件,或者键盘激活了一个元素。

从Jquery的Bug,有工作,只要添加"cursor: pointer"元素的CSS和click事件将按预期工作。 你甚至可以看到这个Jquery点击Ios寻求帮助

其实,接受的答案不适合我。 我尝试使用“光标:指针”,onclick =“”,甚至将元素转换为锚标签。

我做的工作是绑定点击事件的触发事件。 为了使它在所有平台上工作,我必须像这样丑陋的欺骗:

 var ua = navigator.userAgent, event = (ua.match(/iPad/i) || ua.match(/iPhone/)) ? "touchstart" : "click"; jQuery("body").on(event, '.clickable_element', function(e) { // do something here }); 

基于马立克的答案,这是我的承担(这有点清理):

 var ua = navigator.userAgent, pickclick = (ua.match(/iPad/i) || ua.match(/iPhone/)) ? "touchstart" : "click"; $('.clickable_element').on(pickclick, function(e) { // do something here }); 

在标准方面,行业还有很多工作要做。

编辑:

没有在Android手机上工作。 采取了更严格的方法:

 if (document.documentElement.clientWidth > 1025) { pickclick = 'click' } if (document.documentElement.clientWidth < 1025) { pickclick = 'touchstart' } $('.clickable_element').on(pickclick, function(e) { // do something here }); 

你可以使用这个:

 $('button').bind( "touchstart", function(){ alert('hi'); }); 

另一个解决scheme是将元素的光标设置为指针,并使用jQuery live和click事件。 将其设置为CSS。

同样基于马立克的答案 ,它适应事件的设备来发射一个函数,这里是一个代码,强制点击iOS设备上,首先触发事件:

 var UA = navigator.userAgent, iOS = !!(UA.match(/iPad|iPhone/i)); if (iOS) { $(document).on('touchstart', function (e) { e.target.click(); }); }