【问题标题】:jQuery UI - Performance penalty on multiple draggable?jQuery UI - 多个可拖动的性能损失?
【发布时间】:2010-11-21 14:15:12
【问题描述】:

我有一个关于性能的问题。当我在已经可拖动的元素上调用可拖动(使用所有相同的选项)时,是否会降低性能?

我有可在拖动容器(例如漫画)上拖动的语音气泡。这些气泡也是可放置的,因为您可以通过在它们上放置相应的图标来选择它是哪种类型的气泡(说话、愤怒、思考等)。对于一个案例,这一切都很好。当我添加一个新的 Bubble 时,这个新的 Bubble 并没有被我在 init 开始时所做的可拖动调用所覆盖。我自然要做的就是重新绑定。现在是我问自己这个问题的部分。首先取消绑定所有气泡,然后重新应用可放置对象(通过简单地调用气泡的 init 函数)不会有任何好处,因为它会丢失可拖动标签。所以我问自己是否可以简单地重做一个可拖动的对象而不会因为双重绑定相同的功能而失去性能。

我无法真正对其进行测试,因为我是在 21 英寸 iMac 上开发的,这比使用此 Web 应用程序的计算机要快得多(教育,例如小学),性能可能是个问题。

编辑:实际的问题是,如果我在已经可放置的元素上定义了一个新的可放置元素,它只会更改选项还是会应用一个全新的可拖动元素并对其进行双重绑定?这个问题听起来很奇怪,但该应用程序已经有 2k+ 行 jQuery+jQueryUI 代码和很多拖放功能,我不能使用 unbind 头晕目眩。

EDIT_2:我没有考虑过jQueryUI 的destroy 功能。可以试试那个。

【问题讨论】:

    标签: jquery web-applications jquery-ui performance


    【解决方案1】:

    大多数 jQuery UI 使用相同的通用格式来销毁绑定和设置完成,或更改设置后的选项。

    jQuery UI/Draggable

    销毁可拖动对象:

    $("#bubble1").draggable('destroy');
    

    更改选项:

    $("#bubble1").draggable('option', 'scope', 'someNewValue');
    

    不太确定您的问题的方向,我想如果您创建一个新气泡 - 您只需将新气泡设置为 dropbabble,然后更改旧气泡的选项。

    就性能而言,我认为如果您先销毁旧实例,然后将其重新设置,或者只是更改可拖动选项中的选项,则可以避免“双重绑定”对性能的任何影响。

    【讨论】:

    • 这就是我所需要的。没有考虑过,因为直到现在我才需要它。
    猜你喜欢
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    相关资源
    最近更新 更多