2011-06-23 196 views
0

如何保存可拖動元素,以便下次加載時,我不必再次發出draggable()函數。jQuery可拖動元素

我以爲有了ui-draggable這個類會自動讓元素被識別爲可拖動的,但我發現情況並非如此。

這是保存的draggble元素。

<div id="one" class="ui-draggable">test 1 </div> 

我是否必須再次發出draggable()函數才能使其可拖動。

+0

「load」是指頁面加載? – Zlatev

+0

@Zlatev使元素可拖動後,我將數據庫中的html保存起來。該html包含類'ui-draggable'下次我從數據庫中檢索html時,我假設它應該自動拖動,而不必再次通過可拖動函數運行html。 – Pinkie

回答

1

簡短的回答是:是的,每次頁面加載時都必須調用draggable。我只是在準備好的事件中調用它。這是做這件事的典型方式。

1

您總是必須發出draggable()。我會建議堅持FishBasket的迴應,只是做它。

你必須再次這樣做的原因是因爲它是行爲 - 而不是內容。所以它是用JS完成的,而不是HTML。保存HTML不會幫助你,而且你不能「保存」JS執行 - 你只需要再次運行它。

如果你是受虐狂的,你可以通過在鼠標懸停上使用實時事件/委託來爲頁面上的所有可拖動對象進行集體操作。但我不會推薦一個實時的鼠標懸停,因爲它是舊版瀏覽器的性能問題。

$(document).delegate('selectorForDraggables', 'mouseover', function() { 
    var $this = $(this); 
    $this.data('isDraggable') || $this.draggable().data('isDraggable', true); 
}); 

這將延遲元素的可拖動調用,直到您將鼠標懸停在該元素上。現在的問題是你必須檢查每個元素onmouseover,看看是否做可拖動的調用...