2013-07-27 46 views
0

是否有可能延遲jQuery UI的拖放插件被初始化,直到做出移動或點擊?不知道這是否可能。我有一大堆使用拖放的單元格,就像一個Excel網格一樣,性能不是很好。用於JQuery拖放插件的延遲初始化

+0

您能否創建一個http://jsfiddle.net/ http://plnkr.co/edit/? – mrzmyr

回答

0

我走這條路線,它似乎工作。

$.fn.liveDraggable = function (opts) { 
    this.one("mouseover", function() { 
     if (!$(this).data("init")) { 
      $(this).data("init", true).draggable(opts); 
     } 
    }); 
    return this; 
}; 
0

您可以使用delaydistance

$(".selector").draggable({ delay: 300 }); 

$(".selector").draggable({ distance: 10 }); 

從API文檔:

延遲
時間以毫秒爲單位鼠標按下後直到拖着應該開始。當點擊 元素時,此 選項可用於防止不需要的拖動。

距離
距離以像素爲單位的mousedown後鼠標拖動必須應該開始前移動。點擊某個元素時,該選項可用於防止不必要的拖動。


更新:

爲了保持更多的標準功能,並僅在需要時初始化拖動,請嘗試使用懸停功能,像這樣:

Working Example

$('div').hover(function() { 
    $(this).addClass('selector'); 
    $(".selector").draggable({ 
     //options 
    }); 
}, 

function() { 
    $('div').removeClass('selector'); 
}); 
+0

這仍然會初始化元素。我想嘗試初始化它可能是一個按鈕點擊並按住,當該元素懸停在它上面時,init會掉落,但不知道這是可能的。如果我沒有,我不想立刻初始化一個1000格的網格。 –

+0

@MikeFlynn查看更新 – apaul

+0

您仍然有點擊,然後重新點擊拖動。我希望它能像以前一樣工作。 –