在我们的应用中,我们希望从一个列表中删除。问题是,当列表中有许多项目时 - 当元素可拖动时,无法滚动。
作为解决方法,我们希望禁用元素的可拖动性,并仅在用户长时间点击元素时启用它。
$('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上无效。
也许有人有个主意。
答案 0 :(得分:2)
使用延迟选项是否有意义? http://api.jqueryui.com/draggable/#option-delay
$("li").draggable().draggable( "option", "delay", 2000);
小提琴:https://jsfiddle.net/dob3uegj/
编辑: jqueryui-touch-punch(http://touchpunch.furf.com/)添加到智能手机模拟小提琴中: https://jsfiddle.net/dob3uegj/1/