2016-03-15 236 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