2011-03-03 29 views
-1

給出兩個最簡單的連接排序,如何在旅途中禁用jQuery連接的排序?

問題(已更新)。當一個可拖動的物品離開它的容器時,容器不應該在物品仍然被拖拽時接受它(就像容器被禁用一樣)。在DOM級別上,佔位符不應移回到原始容器。

這怎麼實現?


的代碼在此jsfiddle不能按預期工作,但應該是一個很好的起點。

+0

您希望在什麼時候阻止原始容器接受可拖動項目?一旦你點擊拖拽並且處於拖拽狀態,或者在它被拖拽到目的地之後,你就不想將它拖回去? – MikeM 2011-03-03 20:17:56

+0

我很樂意在項目被拖動時阻止接受。但無論如何,其他連接的可排序項仍應接受可拖動的項目。 – mcmlxxxiii 2011-03-03 20:24:15

+0

那麼,如果我們拖出一些東西並將它放在兩個可排序對象之外的地方,會發生什麼?它被刪除?順便說一下*「當可拖動的物品離開它的容器時,容器不應該在物品仍然被拖動時接受它」* - 這是一個模糊的描述。如果物品「被拖動」,則不需要任何人接受它。當物品放置在某處時,接受是一個問題。 – 2016-07-01 07:37:51

回答

-2

我是工作在你的代碼上jsfiddle,我改變了它

$("ul").sortable({ 
    connectWith: "ul", 
    items: "li:not(.ui-state-disabled)", 
    cancel: "ui-state-disabled", 
    out: function (e, ui) { 
     ui.item.addClass("ui-state-disabled");  
    } 
}).disableSelection(); 
+0

不幸的是,事實並非如此。所需的行爲是,您仍然可以將該項目拖到原始容器上,但這根本不會影響容器,就好像它已禁用。 – mcmlxxxiii 2011-03-03 20:14:34

+0

我放棄了... :(我不行。問題是佔位符:( – Joseadrian 2011-03-03 23:08:05

+0

無論如何謝謝你的努力 – mcmlxxxiii 2011-03-04 13:38:42

0

也許這會做...

http://jsfiddle.net/pMYft/15/

$("#origin").sortable({ 
    connectWith: '.destination' 
}).disableSelection(); 
$(".destination").sortable({ 
    connectWith: ".destination", 
}).disableSelection(); 

起源列表可以拖動到任意的目的地清單但不能回到自己。

+0

不,不是這樣,關鍵是「拖動」,實際上,在使用例如'$(this).sortable('disable')'拖動時,沒有任何連接的sortable可以被禁用,無論是起源地址還是其他地址,並且我正在尋找解決方法 – mcmlxxxiii 2011-03-03 20:51:30

+0

This在拖拽的時候是非常棘手的,無論如何,如果用戶點擊它但將其拖到屏幕上,例如它需要在某個地方結束,那麼它需要一個目標位置。實際上並沒有將它拖到其他列表之一? – MikeM 2011-03-03 21:23:57

+0

我想一個技巧可能是在原始容器頂部放置一個隱形的div塊,你必須用z-indexes玩弄,但這可能是解決方法。 – MikeM 2011-03-03 21:28:53