如何防止拖动时触发滑动事件

How to prevent swipe event from firing when dragging

我将 jQueryMobile 的滑动事件与 JQuery UI 的可拖动对象一起使用。

JSFiddle 解释得最好。

$('.draggable').draggable({
    delay: 300,
    cancel: false,
    start: function(event, ui) {
//      something needs to happen here?
    },
    stop: function(event, ui) {
    },
    revert: function(is_valid_drop) {
      return true;
    }
});

$('.swipe-area').on('swiperight', function(evt) {
    alert('swiped right :('); 
});

基本上,当您尝试向右拖动深蓝色框时,会触发滑动事件。

我想在拖动的时候防止这个。你会推荐什么?

(JSFiddle 解决方案会很棒!)

您可以使用标志 onoff

演示

http://jsfiddle.net/pzwwphL3/

代码

var drag; 
$('.droppable').droppable({
    accept: '.draggable',
    drop: function(event, ui) {


    }
  });

$('.draggable').draggable({
    delay: 300,
    cancel: false,
    start: function(event, ui) {
        drag = "on" 
//      event.preventDefault();
//      event.stopPropagation();
    },
    stop: function(event, ui) {
        drag = "off" 
    },
    revert: function(is_valid_drop) {
      return true;
    }
});

$('.swipe-area').on('swiperight', function(evt) {
    if (drag == "off") {
    alert('swiped right :(');
    }
});