【问题标题】:jQuery drag drop slower for more DIV items更多 DIV 项目的 jQuery 拖放速度较慢
【发布时间】:2009-07-15 19:20:58
【问题描述】:

我的页面中有一个层次标签(与父子关系),它将占 500 - 4500(甚至可以增长)。当我绑定所有的可拖动和可放置对象时,我发现 IE7 和 IE6 的性能非常差。自定义助手不会顺利移动并且非常非常慢。基于其他一些帖子,我已经使可放置对象在鼠标悬停和鼠标移出事件(动态)上被绑定/解除绑定。现在好多了。

但我仍然没有看到自定义助手移动得非常顺利,鼠标光标和助手移动时之间存在间隙,当我从远程访问站点时变得非常糟糕。

请帮我解决这个性能问题。我完全被困在这里.. :(

【问题讨论】:

  • 你指的是stackoverflow.com/questions/552951/…吗?发布一些代码,以便我们提供帮助。
  • 顺便说一下,远程问题应该是您的网络延迟。我不认为优化 javascript 对此有帮助。
  • 嗨 Chetan,是的,我按照问题 552951 给出的解决方案做了。获得了一些改进。但是在浏览器上执行 jquery 时,网络延迟有什么影响。我用大约 100 个 Div 测试了一个样本,它很平滑。但是我补充说 500+ 它开始变慢了。还有其他方法可以解决这个问题吗?
  • 我以为你在使用远程桌面。

标签: jquery performance jquery-ui drag-and-drop


【解决方案1】:

尝试在任何给定时刻减少可丢弃物的数量。没有其他办法。

一种策略是将放置目标组合到由 div 绑定的组中,并仅在此父 div 的鼠标进入时将此 div 的子级绑定为可放置对象,并在鼠标离开时取消注册。

【讨论】:

    【解决方案2】:

    我之前也遇到过类似的问题(不是可丢弃的 div,而是太多的 div 会影响性能)。对我们来说,解决方案是在 div 滚动到屏幕外时重新使用它们,因为如果您只拥有当前视图中的 div 以及更多向上/向下滚动的 div,那么您将不会拥有尽可能多的 div。当然,这对我们来说更容易一些,因为它是使用遥控器控制的,一次只能移动一个屏幕,并且不必考虑点击滚动条上的随机位置,但它可能仍然是对你有些用处。如果上面的解释不够清楚,它的工作原理是这样的:

    |  [spare divs]
    | -----------------
    |  [buffered divs for page-up]
    | -----------------
    |  [divs currently on screen]
    | -----------------
    |  [buffered divs for page-down]
    | -----------------
    |  [spare divs]
    | -----------------
    

    现在,每当您滚动时,您都会使用所需数据填充页面上的所有 div,然后整理缓冲区,将任何其他 div 留空。在您的情况下,您可以通过打开/关闭 droppable 来逃避更改数据,而不是更改数据。

    【讨论】:

      猜你喜欢
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多