【问题标题】:e.PreventDefault() & e.stopPropogation() not working on tablet & mobilee.PreventDefault() 和 e.stopPropogation() 不适用于平板电脑和移动设备
【发布时间】:2015-01-16 02:55:09
【问题描述】:

我在一个 js 文件中有以下代码,它在所有桌面浏览器上都可以正常工作,但在以下平板电脑和手机上却不行

  • 三星 S4(Chrome 和默认浏览器)
  • iPhone 4S(chrome 和 safari)

在 ipad air/mini(使用 chrome 和 safari)上运行良好 在 HTC 1(使用 chrome 和默认)上它工作正常

有人对此有任何想法吗? - 似乎设备断断续续,令人沮丧

  var clicked = false;
    $('header > div > nav > ul > li').first().find('a').on("click", function (e) {
        if (clicked === false) {
            clicked = true;
            return true;
        } else {
            e.preventDefault();
            e.stopPropagation();
            return false;
        }
    });

代码基本上是在第一次单击后禁用锚链接单击事件(用户单击时页面重新加载 - 在 href 中设置)并在浏览器再次呈现页面时重新启用。

代码已经增长到您在上面看到的内容.. 我最初在 else 块中只有 e.preventDefault();,它在桌面测试中运行良好,直到我使用移动设备。

【问题讨论】:

  • 你试过.one()吗?好奇你是否有同样的问题。
  • preventDefault 和 stopPropagation 有什么意义,return false 两者兼顾

标签: javascript jquery html


【解决方案1】:

移动浏览器没有点击事件。您需要使用 touchstart 或 touchend。

$(...).on("click touchstart", function (e) {

应该做的伎俩

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    相关资源
    最近更新 更多