2011-06-23 195 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,看看是否做可拖动的调用...