jQuery单击事件在iOS中不起作用

Bob*_*obe 66 jquery transform click css3 ios

第二次更新:看起来我的一个函数(resetFigures)阻止了事件处理程序,所以将它移动到bind函数的末尾就将其排序了.

更新:我在经过一些基本测试后意识到点击事件正在注册,只是在点击时盒子无法翻转.

我的网站基本美学功能在Chrome和Firefox中运行,但它拒绝在iOS上正常运行(在带有iOS 6.1的iPhone 4和带有iOS 4.3.5的iPad上进行测试).

您可以在此处查看该站点,当然还有脚本(main.js):http://bos.rggwebdesigns.com/

我已经读过iOS并没有真正正确地处理jQuery点击事件,但我很难找到解决方法.Stack Overflow上的一些线程提到了live()方法,但实现它如下(以及添加onclick=""到可点击元素)似乎不起作用:

$('.card').live('click touchstart', function() {
        var figure = $(this).children('.back');
        var button = figure.find('.button');
        var column = $(this).parents().eq(1);
        $('.column').removeAttr('style');
        column.css('z-index', 2000);
        resetFigures();
        if(flipCard(this)){
            swoosh.pause();
            swoosh.currentTime = 0;
            swoosh.play();
        }
    });
Run Code Online (Sandbox Code Playgroud)

我还遇到了这个有趣的解决方案项目:http://aanandprasad.com/articles/jquery-tappable/.但是,我也没有运气:

$('.card').tappable(function() {
        var figure = $(this).children('.back');
        var button = figure.find('.button');
        var column = $(this).parents().eq(1);
        $('.column').removeAttr('style');
        column.css('z-index', 2000);
        resetFigures();
        if(flipCard(this)){
            swoosh.pause();
            swoosh.currentTime = 0;
            swoosh.play();
        }
    });
Run Code Online (Sandbox Code Playgroud)

此外,如果我被误导,请纠正我,但根据此网站,iOS支持3D转换,并提供相应的前缀:http://caniuse.com/transforms3d

Bin*_*Boy 249

iOS没有注册绑定到DOM加载后添加的元素的点击/触摸事件.

虽然PPK有这样的建议:http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html

我发现这很简单,只需将其添加到css:

cursor: pointer;
Run Code Online (Sandbox Code Playgroud)

  • 哇...这是怎么回事?!Safari这次完成了.这篇Quirksblog文章进一步澄清了这一点:http://www.quirksmode.org/blog/archives/2010/10/click_event_del_1.html (11认同)
  • 几年前在一些Apple办公室:"让我们依靠css值决定是否应该注册点击事件".天才! (11认同)
  • 2018年......仍然是一个问题,5年,他们尚未解决这个问题 (10认同)
  • 几年后,这个修复程序仍然具有相关性......让您想知道这个问题是否会在iOS中得到解决. (6认同)
  • 苹果和微软,可能应该停止创建浏览器......:\ (3认同)
  • 2020年依然强劲 (3认同)
  • 卧槽!?我想知道为什么点击事件在使用jquery .on()的phonegap应用程序中的IOS中不起作用。我添加了光标:指向类和walla的指针!这很荒谬,但确实有效。这是一个5年前的话题了。 (2认同)
  • 游标:指针它疯狂的修复>_< (2认同)
  • Oktober 2018仍然是一个有效的解决方案! (2认同)
  • 如果您使用标签 `<a>`,您还可以在标签中添加 **href** 属性。`<a class="card">单击此处</a>` => `<a class="card" href="javascript:;">单击此处</a>`。 (2认同)
  • 在2019年仍然有意义:) (2认同)

sau*_*ble 55

最近在为客户端开发Web应用程序时,我注意到添加到非锚元素的任何点击事件都无法在iPad或iPhone上运行.所有台式机和其他移动设备都运行良好 - 但由于Apple产品是最受欢迎的移动设备,因此修复它非常重要.

事实证明,在jQuery中分配了一个click处理程序的任何非anchor元素都必须具有onClick属性(可以如下所示为空):

onClick=""
Run Code Online (Sandbox Code Playgroud)

要么

元素css需要具有以下声明:

cursor:pointer
Run Code Online (Sandbox Code Playgroud)

很奇怪,但这就是让事情再次发挥作用的原因!
来源:http://www.mitch-solutions.com/blog/17-ipad-jquery-live-click-events-not-working

  • 谢谢。将`onClick =“”`添加到具有jQuery onClick处理程序的`<div>`上,效果很好。在添加此onClick属性之前,它在Safari iOS之外的所有环境中都可以使用。 (3认同)
  • 太奇怪了.一个{cursor:pointer;}为我工作 (2认同)

eli*_*o.d 2

您应该绑定点击事件,移动 safari 或 UIWbview 中不存在点击。您还可以使用这个polyfill,以避免触摸链接时出现 300 毫秒的延迟。