2010-08-25 63 views
2

我有一個行,我可以拖動項目,並對其進行排序。這一切工作正常。我甚至在每個項目上都有一個刪除事件,所以它可以從行中刪除。jQuery的克隆似乎並沒有保留可拖動/ droppable事件

我想要一個可以克隆行的選項。我這樣做是使用下面的克隆功能:

clonedrow = $("#row1").clone(true); 
clonedid = "row"+nextRowNumber; //nextRowNumber is a variable calculated by counting the rows that exist already. 
clonedrow.attr("id",clonedid).insertAfter("#row1"); 

這一切工作,除了事實「ROW1」可拖動/排序事件不會複製到目標列。難道我做錯了什麼?我想通過添加'真實'它複製事件...?

FWIW加載頁面的時候,我有一個自動構建的第一行,並應用可拖動/排序/刪除事件給它的功能...

回答

4

我不知道太多關於可拖動的事件的性質,但似乎與true克隆可拖動的元素時出現一些奇怪的行爲。也許你不要想要克隆的所有data如果它的一些應該是特定於該元素。

在這個簡單的例子中,當你clone(true)之一,並試圖拖動克隆,原物被拖動。

http://jsfiddle.net/ZmcHd/

也許是更好的只是重新應用draggable()

clonedrow = $("#row1").clone().draggable(); 

http://jsfiddle.net/ZmcHd/1/

如果有需要其他設置,那麼我會在一個變量存儲它們,以避免重複。

var settings = { 
     // some settings 
} 

clonedrow = $("#row1").clone().draggable(settings); 
+0

謝謝帕特里克!這有很大的幫助:)我不認爲你可以看看我的另一個查詢?將不勝感激 - http://stackoverflow.com/questions/3549631/jquery-strange-behaviour-when-toggling-hiding-showing-droppable-panels – WastedSpace 2010-08-25 14:24:25

+0

@WastedSpace - 不客氣。我很樂意看看另一個,但現在我不能。我稍後再回來看看。 :o) – user113716 2010-08-25 14:31:03

+0

@WastedSpace - 對不起,看看另一個。不知道問題的原因是什麼。害怕我不會有太大的幫助。 :o( – user113716 2010-08-26 01:36:48

0

jQuery的拷貝事件和數據,如果克隆傳遞true參數。爲了測試事件是否已獲得通過看元素的數據http://www.jsfiddle.net/zfSrR/1/

console.log($("#row1").data('events')); 
console.log($(clonedrow).data('events')); 
+0

Ayaz - 您不能使用'.live()'來應用插件行爲。只有DOM事件。 :o) – user113716 2010-08-25 13:05:35

+0

你可以使用livequery插件http://plugins.jquery.com/project/livequery/ – 2010-08-26 06:44:38