1

我正在开发一个比较站点,您可以在其中使用 jQuery UI 的可排序功能对项目进行水平排序。所有项目都在一个可以水平或垂直滚动​​的容器内。它在桌面上运行良好,我正在尝试让它在平板电脑上运行。

比较

我已经可以通过以下方式使可排序功能在平板电脑上工作:jsFiddle

document.addEventListener("touchstart", module.bindTouchHandler, true);
document.addEventListener("touchmove", module.bindTouchHandler, true);
document.addEventListener("touchend", module.bindTouchHandler, true);
document.addEventListener("touchcancel", module.bindTouchHandler, true); 

module.bindTouchHandler = function(event){
    var touch = event.changedTouches[0];

    var simulatedEvent = document.createEvent("MouseEvent");
    simulatedEvent.initMouseEvent({
        touchstart: "mousedown",
        touchmove: "mousemove",
        touchend: "mouseup"
    }[event.type], true, true, window, 1,
                                  touch.screenX, touch.screenY,
                                  touch.clientX, touch.clientY, false,
                                  false, false, false, 0, null);

    touch.target.dispatchEvent(simulatedEvent);
    event.preventDefault();
}  

问题是不同的触摸事件现在阻止了水平/垂直滚动的可能性。我想推迟一下。就像只有在用户触摸元素 2 秒时才开始排序/拖动元素。

我该如何处理?

4

1 回答 1

0

虽然我不能直接评论您的问题,但我最近遇到了在触摸设备上使用 jQuery UI 的类似问题。虽然对 jQuery 的官方触控支持即将推出(预计将在 1.14 版本中显示),但 furf 创建了一个优雅的 hack,它允许触控与 jQuery UI 一起工作,而无需付出任何努力。在这里查看:http: //touchpunch.furf.com/

于 2013-10-28T02:35:12.610 回答