【问题标题】:dont know why touch events triggered twice不知道为什么触摸事件触发了两次
【发布时间】:2012-02-20 02:41:08
【问题描述】:

我正在使用 Jquery Mobile,我的触摸事件被触发了两次。起初我认为这可能是鼠标事件和触摸事件之间的重叠,但我试图在平板电脑/智能手机上取消绑定鼠标事件,并且事件仍然被触发两次。

这是我的代码

//Tablet Features
            var eventType = {
                swipeleft: '-=100',
                swiperight: '+=100'
            }
            $('#navMenu').bind('swipeleft swiperight', 
                function(e) {
                    $('#prbBtnHolder').animate({left:eventType[e.type]});
                    //alert(e.type);
                }
            );

//Device Detection
        (function () {
            var agent = navigator.userAgent.toLowerCase();
            var isDevice = agent.match(/android/i);

            if (isDevice == 'android') {
                //alert(isDevice);
                $('*').unbind('mousedown').unbind('mouseout').unbind('mousemove').unbind('mouseup');
            }
        })();

我一直在尝试解决这个问题,如果您有任何想法,请提供帮助。

更新

我设法通过将触摸处理程序放在.ready() 方法之外来解决本地问题。但是,当我在服务器上运行页面时,双重触发再次发生。现在我完全被难住了。为什么两个相同的页面(字面意思是相同)在本地和服务器上的行为不同?

【问题讨论】:

  • 如果您在正则表达式中使用i 标志,则不需要使用toLowerCase(),因为i 标志意味着正则表达式将不区分大小写搜索。
  • 哪些触摸事件被触发了两次?您发布的代码中唯一的触摸事件是swipeleft/swiperight 事件处理程序,您是说那些吗?我在这里测试了代码:jsfiddle.net/B8PQn/1 在我的手机(Android 2.3)上,滑动事件按预期工作。
  • @Jasper——这只是代码的一个例子。页面上的每个事件都被触发两次,我不知道为什么。也许与 jquery mobile 有某种重叠?
  • 查看绑定事件处理程序的代码会对您有所帮助。如果您在任何地方使用.trigger(),也请发布该代码。但是事件处理程序绑定会很有帮助。
  • @Jasper--只有当我包含 jquery mobile 时才会发生双重触发器,并且上面的代码是我绑定 jquery mobile 处理程序的唯一地方。

标签: javascript jquery jquery-mobile


【解决方案1】:

这听起来像是您将脚本放入<body> 标记中。如果你这样做,他们会运行两次。我也发生过同样的事情,并且因为麻烦和沮丧而变得有点秃头。确保所有脚本都在 <head> 标记内。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,并通过稍微调整解决了它...我不建议将其作为确切的解决方案,但我可以快速带您解决问题。

    我定义了一个全局标志

    var bDidPan=true;
    

    在触发器里面写了以下内容:

    if (bDidPan) {
      bDidPan = false; // IT'S IMPORTANT TO PUT THIS FIRST
      //code to execute when triggers
    }
    else
    {
      bDidPan = true;
    }
    

    这就是诀窍。你可以用数字来解决问题(对我来说,用数字效果更好!)

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      • 2011-07-28
      相关资源
      最近更新 更多