在IE7中修改'className'属性非常慢

时间:2010-02-22 15:48:34

标签: javascript jquery css performance

在我的网站上,我动态修改了DIV的javascript'className'属性。然而,这是一个极其昂贵的操作,因为DIV包含许多子节点。有时它需要1.5秒。

有没有办法加快这项行动?比如,隐藏内容,执行操作,然后再次显示内容?

更新

一些其他信息。

实际代码:

$("#myDiv").tabs();

它位于.ready()处理程序中。看到 http://jqueryui.com/demos/tabs/

这是一个昂贵的电话。我进一步跟踪了 className 属性,该属性消耗了所有处理时间。

DIV包含一个大的sharepoint数据网格,请参阅 http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spview.renderashtml.aspx 代码在Sharepoint上运行,在WinXP + IE7上进行测试。

所以我想知道我们是否可以在操作DOM或类似的东西时禁用布局刷新。有什么技巧吗?

2 个答案:

答案 0 :(得分:3)

尝试确保影响类名称正在更改的容器中包含的元素的CSS选择器仅在必要时使用容器类。显然,当您使用容器类驱动布局时,可能会有很多事情受到影响,但有时候只需div.whatever td.currency就可以很容易地将其放入td.currency中。例子)。

IE布局引擎对于某些事情来说真的很快,但我发现大量使用这种布局技术(我相信,这是一种非常好的做法)可能会给浏览器带来很大的负担。值得庆幸的是,IE8在这方面要好得多。

答案 1 :(得分:0)

在更改className属性之前,通过删除两个选项卡以从父级切换来切换选项卡时,我实现了约50%的性能提升。有关实施细节,请参阅https://developers.google.com/speed/articles/javascript-dom