我对性能有疑问。当我在已经可拖动的元素上调用draggable(具有所有相同的选项)时,是否存在性能损失?
我有一个可以在拖动容器(例如漫画)上拖动的语音泡泡。这些气泡也是可放置的,因为你可以通过在它们上面放下相应的图标来选择哪种泡泡(说话,生气,思考等)。这一切都适用于一个案例。当我添加一个新的Bubble时,这个新的Bubble不会被我在init期间开始的可拖动调用覆盖。我自然要做的就是重新绑定。现在是我问自己这个问题的部分。首先取消绑定所有气泡,然后重新应用可放置对象(通过简单地调用气泡的init函数)将不会有任何好处,因为它会丢失可拖动标记。因此,我问自己是否可以简单地重做一个可拖动而不会失去性能,因为双重绑定相同的功能。
我无法真正测试它,因为我开发的是21英寸iMac,这比计算机可能成为问题的网络应用程序(教育,例如小学)使用的计算机要快。
编辑:实际的问题是,如果我在已经可以删除的元素上定义一个新的droppable,它只会更改选项还是应用一个全新的draggable并双重绑定它?问题听起来很奇怪,但是应用程序已经有2k + jQuery + jQueryUI代码行了很多拖放功能,我不能使用unbind light-headed。
EDIT_2:我没有考虑过jQueryUI的destroy函数。可能会尝试那个。
答案 0 :(得分:1)
大多数jQuery UI使用相同的通用格式来销毁绑定和设置完成,或者在设置后更改选项。
摧毁一个可拖动的:
$("#bubble1").draggable('destroy');
更改选项:
$("#bubble1").draggable('option', 'scope', 'someNewValue');
不确定你的问题在哪里,我想如果你创建一个新泡泡 - 你只需将新泡泡设置为dropbble,并更改旧泡泡的选项。
就性能而言,我认为如果先破坏旧实例,然后重新设置,或者只更改draggable中的选项,我认为可以避免任何来自“双重绑定”的性能命中。