JQ UI 在 iOS 上可拖动:在 taphold-handler 中启动拖动

JQ UI Draggable on iOS: initiating dragging in taphold-handler

在我们的应用程序中,我们希望从一个列表下拉到多个列表。问题是,当列表中有很多项目时 - 当元素可拖动时无法滚动。

作为解决方法,我们希望禁用元素的拖动能力,并仅在用户长按元素时启用它。

    $('li').bind('taphold', function (event, ui) {
        console.log('taphold');
        clearAll(); // clearing all other catched
        $(this).addClass('catched')
        $(this).draggable('enable');
    });

这里是 jsfiddle https://jsfiddle.net/nrxaqc34/10/

目前为止一切正常,但用户需要再次点击才能拖动。如果用户可以在长按后立即开始拖动,那就太好了。

这里的答案 不适用于 iOS。

也许有人有想法。

使用延迟选项有意义吗? http://api.jqueryui.com/draggable/#option-delay

$("li").draggable().draggable( "option", "delay", 2000);

Fiddle: https://jsfiddle.net/dob3uegj/

编辑: jqueryui-touch-punch (http://touchpunch.furf.com/) 添加到 fiddle 用于智能手机模拟: https://jsfiddle.net/dob3uegj/1/