2016-03-15 181 views
2

在我们的应用程序中,我们希望从一个列表中删除。问题是,当列表中有很多项目时 - 元素可拖动时无法滚动。iOS上的JQ UI可拖拽:启动拖拽处理程序中的拖拽

作为解决方法,我们希望禁用元素的拖拽能力,并仅在用户长时间点击元素时启用元素。

$('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/

到目前为止,它的工作原理,但用户需要以拖挖掘一次。如果用户可以在长时间点击后立即开始拖动,那就太好了。

这里的答案https://stackoverflow.com/a/9922048/582727不适用于iOS。

也许有人有一个想法。

回答

2

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

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

小提琴:https://jsfiddle.net/dob3uegj/

编辑: jQueryUI的触摸冲(http://touchpunch.furf.com/)加入摆弄智能手机模拟: https://jsfiddle.net/dob3uegj/1/

+0

有趣的方法,但不幸的是列表不滚动的https: //jsfiddle.net/jc9gda2w/1/ – Daniel

+1

更新的小提琴:https://jsfiddle.net/jc9gda2w/6/ 我删除了touchpunch库并添加了一些代码行。 –

+0

看起来很有希望。也许你知道如何向用户发出信号,他可以拖动?我尝试了draggable.start,但它只在用户拖动元素后才起作用https://jsfiddle.net/jc9gda2w/8/ – Daniel