2010-04-14 65 views
4

我有一個可拖動(jquery-ui)元素。我如何根據一些限制取消當前draggig?換句話說,我想約束這個可拖動元素的可能移動,但是它只是基於軸或父元素(包含)而更加複雜。取消拖動拖動

我該怎麼做?

回答

1

你不能取消它似乎下降。唯一的解決辦法我至今是重新繪製所有的拖拽元素...

這是用於把確認對話框下降,去類似:

fruitbowl.draw() // my routine which puts draggable elements into the DOM 

$("trash").droppable({ 
    drop: function(ev, ui){ 
     $("#areyousure-dialog") 
       .data('fruit',ui.draggable) // passes the dragged el 
       .dialog("open") 
    } 
} 

$("#areyousure-dialog").dialog({ 
    buttons: { 
     'Yes I\'m sure': function(){ 
       var fruit = $(this).data('fruit') 
       fruit.remove() 
       fruitbowl.draw() 
       $(this).removeData('fruit').dialog('close') 
     }, 
     Cancel: function(){ 
       fruitbowl.draw() 
       $(this).removeData('fruit').dialog('close') 
     } 
} 

開放的改進,不知道這是將刪除的元素傳遞給對話框的最佳方式,但適用於我。

2

嘗試使用拖動事件處理函數與event.preventDefault();

例如:

$(*selector*).draggable({ 
    drag: function(event) { 
     if (*condition*) { 
      event.preventDefault(); 
     } 
    } 
});