我正在尝试使用拖动来来回移动 div。这部分工作正常,直到 div 具有可滚动的内容。由于滚动条,这在桌面上不是问题,但在触摸设备上会出现问题。因为触摸事件与拖动事件冲突,所以我无法滚动内容。我试图创建一个条件来检测拖动是否比垂直更水平..
我希望在垂直触摸交互过程中防止拖动,但 UI 拖动方法仍然会触发并覆盖触摸事件。我正在使用 touch-punch 插件来使可拖动的工作在触摸设备上工作,所以可能其中的某些东西使情况变得复杂。如果我能阻止 UI 拖动方法完全触发,直到满足水平拖动条件,那就太好了。我认为这将消除干扰。
// note the condition inside the drag function
start: function(e){
// get starting point of the drag
startDragX = e.pageX;
startDragY = e.pageY;
},
drag: function(e, ui){
// prevent drag until user has moved 30px horizontally
if (Math.abs(e.pageX - startDragX) < 30){
ui.position.left = 0;
} else {
if (ui.position.left < 0) {
// left drag
ui.position.left = ui.position.left + 30;
} else {
// right drag
ui.position.left = ui.position.left - 30;
}
}
}
这是一个演示问题的小提琴(在触摸设备上测试):http: //jsfiddle.net/jTMxS/2/