2010-08-23 76 views
0

我已經基於代碼的幾個可拖動/可隱藏盒貼在這裏: http://webdeveloperplus.com/jquery/saving-state-for-collapsible-drag-drop-panels/的jQuery奇怪的行爲(隱藏/顯示)可棄面板

我也有一個區域,與我可以將它拖到塊的列表任何一個這些框,然後對它們進行排序。這工作正常。只有當我開始切換這些盒子或移動他們的位置時,事情纔會變得怪異。

實施例1

比方說,我已經3盒垂直堆疊:

BOX1

BOX2

BOX3

塊可以被拖動到(和排序)確定。如果我再往前BOX2以上BOX1所以爲了現在是:

BOX2

BOX1

BOX3

我不能再拖累任何東西到BOX2。我在Firebug中沒有遇到任何錯誤。沒有任何反應。

實施例2

如果我有上述(BOX1,BOX2,BOX3)盒相同的順序和I '隱藏' BOX2的內容,我無法拖動任何東西到BOX3。如果我再次'展示'Box2,我可以拖入Box3但不是Box2 ...

如果我設置了以下框並隱藏Box3,我無法將任何東西拖入Box4 & Box5。如果我再展BOX3,我不能拖成唯一框BOX3:

BOX1

BOX2

BOX3

Box4

了Box5

任何想法折頂你的頭?我正在使用通常的可拖動功能(不可丟棄的功能,因爲使用可排序的droppable發射兩次droppable事件 - 這個論壇上的另一個用戶注意到了一種奇怪的現象)。我必須指出,當您啓動此代碼時,只加載一個框,並且您單擊一個按鈕以創建新框。這是一個構建新盒子的功能,並將其設置爲可拖放/可排序區域。

乾杯:)

我已經創建了一個簡化視圖--update -------------------------,使用了大部分'webdeveloperplus'代碼(本章中的巨大榮譽)。它可以在這裏找到:jsfiddle.net/gD94w/4(我喜歡這個jsfiddle網站!)。你應該能夠複製我的問題(拖動'項目'到藍色區域)。任何我想知道的想法!謝謝。

+1

由於問題的複雜性,我認爲如果您可以將您的代碼放在網上,這樣可以幫助我們對其進行試驗並測試一些內容,這將有所幫助。 – Gabriel 2010-08-23 16:48:13

+0

Gabriel是正確的,做一個http://jsfiddle.net/的例子或類似的東西。 – 2010-08-24 02:52:40

+0

好吧,你是對的。將在一個例子上工作並在這裏上傳。無法上傳我的整個代碼,因爲它是更大應用程序的一部分。如果我發現當它與代碼的其他代碼解耦時,調試它可能會變得更容易一些! – WastedSpace 2010-08-24 09:20:44

回答

0

我有同樣的確切問題,但我的代碼略有不同。我設法弄清楚,jquery會記住可排序的位置,所以如果你移動它或改變它(通過切換或排序父元素),那麼它會忘記它的位置。

解決方案是在每次更改位置時刷新排序。就我而言,我連着下面的代碼到父排序的更新事件,我的肘:

$('.sortable-item').sortable('refresh'); 

UPDATE:

我分叉了的jsfiddle進入一個新的:http://jsfiddle.net/zf26q/

注意的增加:

$('.draggedcontent').sortable('refresh'); 

update: function(event, ui){ 
    $('.draggedcontent').sortable('refresh'); 
} 

我不能複製這個問題。讓我知道如果這解決了你的問題。

+0

謝謝你。它仍然是一個突出的問題,所以任何幫助表示讚賞:)我已經嘗試過,但似乎沒有什麼區別。如果你想編輯我的jsfiddle免費 - 只需發佈我的新網址。你說的立場是什麼意思?實際的像素座標?或者DOM中的面板相對於彼此(頂部是位置0,第二位是位置1等)?如果是後者,你怎麼知道這些是什麼?警報($(本)的.index());例如? – WastedSpace 2011-02-01 11:50:39

+0

你是個天才!一些簡單的代碼行,它的作品。謝了哥們 :) – WastedSpace 2011-02-02 11:47:20