【问题标题】:jQuery click not working in iOS?jQuery单击在iOS中不起作用?
【发布时间】:2016-01-28 04:42:11
【问题描述】:

我在网站上添加了一些简单的 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 属性的元素上注册。

所以,我的问题。这只是我吗?其他人看到了吗?

【问题讨论】:

标签: jquery ios twitter-bootstrap-3


【解决方案1】:

How apple handles events

根据设计,您需要使用可点击元素。所以是的,每个人都会遇到这个问题,除非他们用类似的解决方案来解决这个问题。如果它不能预期被点击,那么它不会被 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>

【讨论】:

  • 谢谢!这正是我想要的
猜你喜欢
  • 2013-01-25
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
  • 2018-05-02
  • 2016-03-23
  • 2011-12-29
  • 1970-01-01
相关资源
最近更新 更多