【问题标题】:Disable swipe event when using popup in jquery mobile在 jquery mobile 中使用弹出窗口时禁用滑动事件
【发布时间】:2015-08-12 19:39:36
【问题描述】:

我的应用程序具有向左滑动和向右滑动的功能,可以调出导航菜单。代码如下所示。

$(document).on("swipeleft swiperight", function(swipeEvent) {
   //my code here
}

在应用程序的页面中,我使用jquery mobile popup 来显示图像。我遇到的问题是 swipeleft 和 swiperight 仍然在弹出窗口内工作,并在后台显示导航栏,我不想要这个。

我在弹出窗口小部件上使用了 data-dismissible="false" 但这没有帮助。

你认为我应该如何解决这个问题?

【问题讨论】:

  • 测试弹出窗口在处理程序中是否可见
  • 对不起,我是新手。你说的handler是什么意思?那是向左滑动和向右滑动事件吗?以及如何测试它是否在处理程序中可见?
  • handler 是传递给 on 的函数。要测试弹出窗口是否可见,您可以使用类似: $("#mypopup").is(":visible")
  • 您将事件绑定在整个文档上...尝试将其绑定在更具体的内容上。

标签: javascript jquery jquery-mobile


【解决方案1】:

使用 event.stopPropagation();为我工作。

我在弹出 div 上添加了 swipeleft 和 swiperight 处理程序并使用了 event.stopPropagation();在里面。

    $('#mypopup').on('swipeleft swiperight', function(event) {
        event.stopPropagation();
    });

【讨论】:

    【解决方案2】:

    您可以将函数绑定到 popupcreate 事件 (http://api.jquerymobile.com/popup/#event-create),该事件会使 swipeleft swiperight 功能无效。一种方法是让 popupcreate 将全局变量更新为 true,然后让您的 .on(swipeleft,swiperight) 在执行任何操作之前检查该变量的值。然后您可以在 popupafterclose 事件中将其设置为 false。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多