【问题标题】:jQuery sortable very slow in IE8IE8中的jQuery排序非常慢
【发布时间】:2010-01-29 16:42:39
【问题描述】:

我使用 1.4.1 jQuery 在我的 div 列表中添加了一个可排序的 jQuery 插件。在页面加载时调用的函数非常简单。

$(function()
{ 
 $('#divEditFieldOrderModal_FieldList').sortable(
 {
  axis: 'y',
  cursor: 'pointer',
  placeholder: 'sortOrderPlaceholder'
 });
});

这个divEditFieldOrderModal_FieldList包含大约20个项目,每个div里面都有一个小文本字符串,没什么特别的。 在 FF 或 Chrome 中运行此页面,我发现一切运行顺利,没有任何问题。但是当我在 IE8(没有兼容模式)中尝试同样的事情时,一切都变得如此缓慢,以至于鼠标几乎无法移动。

当尝试使用嵌入式分析器分析 JS 时,我看到名为“数据”的函数包含“独占时间”列中的最大值。 我大概分析了 2 秒,将一项从列表底部移动到顶部。

data Count:5 399     Exclusive time:124,00

顺便说一句,我在 IE8 中测试了 sortable plugin 官方示例,一切都运行得又快又完美。当然,我的页面比示例加载更多的控件和表格...

也许有人知道什么会导致 IE8 出现这个问题,我能做些什么?

P.S.:在IE7兼容模式下运行流畅。

【问题讨论】:

  • 您是否也在使用最新版本的 jquery UI?我相信它是 1.8
  • 是的,我正在使用 1.4.1 主版本和 1.8rc1 UI 版本。只是忘了提。

标签: javascript jquery jquery-plugins internet-explorer-8


【解决方案1】:

好吧,如果它在 IE7 中运行良好并且您正在开发以支持 IE7,那么为什么不使用 HTTP header or Meta Tag 强制 IE7 兼容模式呢?授予其某种“回避”策略,但就个人而言,如果不必这样做,为什么要浪费时间?

也就是说,得到诊断会很有趣。你能发布你的代码吗?

【讨论】:

  • 看起来 IE8 内部的 id 搜索机制(这是 jQuery 用户经常使用的)根本没有优化。当我的页面变大,开始包含超过 1k 的 div 和大表时,“可排序”操作正以疯狂的速度减慢。我决定按照您的建议添加一个 Meta 标签。谢谢。
  • @Gregory:没问题。您可以为我自己和其他人发布此信息的链接吗?我完全没有意识到这一点,记住这一点会很好。
  • 我不是 100% 确定 jQuery 使用什么机制来遍历元素,我将深入研究 jQuery 源代码。但是你可以在这里coolphptools.com/tests/get-id-v-dot.html比较IE8和其他浏览器的getElementById搜索速度。我想知道为什么这一切在 IE7 中都能正常工作,尽管它并不比 IE8 更强大......
  • 但无论如何,我认为问题在于搜索机制。当 DOM 树变大时,'Sortable' 开始工作得更慢。
猜你喜欢
  • 2022-09-27
  • 1970-01-01
  • 2011-01-18
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多