【问题标题】:JQuery's on() don't work on iOSJQuery 的 on() 在 iOS 上不起作用
【发布时间】:2013-10-17 16:08:15
【问题描述】:

我有一个看起来像这样的 Javascript

$(document).on("click", "#nearLines", function () {
    $("#loadingAnim").show();
    $("#indexChoices").slideToggle("slow", "swing", function () {
        getNearLines();
    })
});

它在桌面浏览器上运行良好,但在 iOS 上,当点击 ID 为 nearLinesdiv 时,没有任何反应。知道为什么吗?

PS:我用 jquery.min 2.0.3 和 1.9.1 进行了尝试。

【问题讨论】:

  • 我必须在家查看,但我的作品集使用.on('click', function() {} 作为菜单,它在我的 iPhone 上运行良好。
  • 确保没有包含#nearLines 的元素具有执行event.stopPropagation() 的点击处理程序。这将阻止委派工作。
  • 我也使用 .on 没有问题。一定是别的东西!
  • @Barmar 我的 js 很简单,我没有这些东西。 @ nmoliveira 可能但是什么?
  • 在使用 jQuery 进行移动端开发时,强烈建议使用jQuery Mobile 否则你肯定会遇到更多意想不到的副作用...但是,如果你 build yourself a small script 来解决 jQuery 在移动端的问题,你可能会避开他们...

标签: jquery touch-event


【解决方案1】:

这是一个奇怪的答案,但是如果您没有绑定到锚标记,jquery click 不能很好地与 ios 配合使用。它不能告诉你的按钮是一个点击事件,所以不会做任何事情。

尝试将其添加到您的 css 中

#nearLines{cursor:pointer;}

这基本上告诉 ios 你的 div 是一个链接。

在你的 ipone 上试试下面的例子,看看我的意思

http://jsfiddle.net/VncKc/2/

【讨论】:

  • 确实很好奇的回答者,但是是的,这“解决了”问题。
  • 是的,这很烦人,但以一种奇怪的方式是有道理的:) 以阻止用户在用手指滚动时意外点击等等。我通常尝试只绑定到可能不会遇到的锚链接这个问题。
  • 嘿,我发现导航器发送的是touchstart,而不是点击或点击(参见riccardo.forina.me/…
猜你喜欢
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 2015-12-03
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多