jQuery 单击在 iOS 中不起作用?[英] jQuery click not working in iOS?

本文是小编为大家收集整理的关于jQuery 单击在 iOS 中不起作用?的处理方法,想解了jQuery 单击在 iOS 中不起作用?的问题怎么解决?jQuery 单击在 iOS 中不起作用?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我向网站添加了一些简单的 JavaScript:

jQuery(document).click(function(){
  alert('click');
});

...而且只有当有人点击实际的锚元素、按钮元素或带有 cursor: pointer; CSS 的东西时,它才会在 iOS 中触发.

特别是,我在 Bootstrap 3 固定导航栏菜单中看到了这一点.当它打开时,我添加了:

jQuery(document).click(function(){
  jQuery('#navbar-collapse.collapse.in').collapse('hide');
});

确保无论有人点击何处,它都会关闭.

这不适用于 iOS(已在 iPhone 4、iPhone 6/6+ 和 iPad 上验证).

似乎 jQuery 单击事件仅在"可点击"元素(A、BUTTON 等)或具有 cursor: pointer; CSS 或 onClick='...something...' 甚至 onClick='' HTML 属性的元素上注册.

所以,我的问题.这只是我吗?有没有其他人看到这个?

推荐答案

苹果如何处理事件

按照设计,您需要使用可点击的元素.所以是的,每个人都会遇到这个问题,除非他们使用类似的解决方案来处理它.如果它不能预期被点击,那么它就不会被 IOS 看到.

摘自苹果开发者页面.

<块引用>

使元素可点击

由于 iOS 上的 Safari 创建事件来模拟鼠标的方式,您的某些元素在 iOS 上可能无法按预期运行.在特别是一些只使用 mousemove 处理程序的菜单,如清单6-1,需要更改,因为iOS不识别它们可点击元素.

清单 6-1 使用鼠标悬停处理程序的菜单

<span onmouseover = "..."
  onmouseout  = "..."
WHERE TO BUY
</span>
<块引用>

要解决此问题,请添加一个虚拟的 onclick 处理程序 onclick = "void(0)",以便iOS 上的 Safari 将 span 元素识别为可点击元素,如如清单 6-2 所示.

清单 6-2 添加一个 onclick 处理程序

<span onmouseover = "..."
  onmouseout  = "..."
  onclick = "void(0)">
WHERE TO BUY
</span>

本文地址:https://www.itbaoku.cn/post/924320.html