8

问题是当我想要垂直滚动时会触发 swipeleft/swiperight 事件。

我们使用的是 jQuery mobile 1.1.0 版本和 jQuery 1.7.1。

代码是:

 $(document).delegate('#quizResumePage', 'swipeleft swiperight', function (event) {
   event.stopImmediatePropagation();
    if (event.type == 'swipeleft') {
       $('#btnnext').trigger('click');
    }  else  if (event.type == 'swiperight')  {
       $('#btnprevious').trigger('click');
    }
   event.preventDefault();
});

那为什么当我想滚动页面时会触发滑动事件呢?

这个问题出现在三星galaxy android 2.3.5...

有人可以帮我解决这个问题吗?

4

1 回答 1

12

您可以控制滑动事件的工作方式来更改以下对象的值

$.extend($.event.special.swipe,{
  scrollSupressionThreshold: 10, // More than this horizontal displacement, and we will suppress scrolling.
  durationThreshold: 1000, // More time than this, and it isn't a swipe.
  horizontalDistanceThreshold: 30,  // Swipe horizontal displacement must be more than this.
  verticalDistanceThreshold: 75,  // Swipe vertical displacement must be less than this.
});

在收听滑动之前将其放在您的代码上。例如,将verticalDistanceThreshold 更改为15,将durationThreshold 更改为500,这将有助于减少误报。

另一方面,在您的代码中,您正在触发按钮上的单击事件,虽然这有效,但更好的方法是直接调用执行下一个/上一个操作的方法。

祝你好运!

于 2012-08-20T19:44:18.593 回答