javascript - jQuery 的交换方法时间成本

标签 javascript jquery performance swap

我在 firebug 中运行分析器,发现 UI 中运行时间成本最高的函数是 jQuery 的 .swap()。我可以看到这必须与 .css() 方法相关联。

这是我的分析器的图像:

alt text

显然,为了提高这里的速度,我需要减少调用 .css(),但这确实是一个项目,因为我用它来设置和纠正不同元素的样式,这些元素必须是完全动态的。

有没有更好的方法来加快速度?

我正在使用jquery.1.4.2。我无法继续使用 1.4.4,因为它出于某种原因破坏了我的很多脚本。将交换方法从 1.4.4 扩展到 1.4.2 有好处吗?或者这会带来更多的不兼容性?

什么是交换方法以及为什么它如此耗时?

最佳答案

从 jQuery UI 代码中可以看出,.swap() 并不是直接被调用的,这是 jQuery 框架本身中唯一使用 .swap() 的地方 直接是检索元素的计算高度/宽度时的 .height().width() 调用。

当无法直接从浏览器获取大小时,它的作用是暂时将样式替换为以下样式:

cssShow = { position: "absolute", visibility: "hidden", display: "block" };

然后在更改后的样式状态下执行通常的内部 getWH() 函数,并恢复。

借用jQuery的部分代码:

jQuery.each(["height", "width"], function( i, name ) {
    jQuery.cssHooks[ name ] = {
        get: function( elem, computed, extra ) {
            var val;

            if ( computed ) {
                if ( elem.offsetWidth !== 0 ) {
                    val = getWH( elem, name, extra );

                } else {
                    jQuery.swap( elem, cssShow, function() {
                        val = getWH( elem, name, extra );
                    });
                }

                   // etc.

jQuery UI 到处都使用 height()width() 函数,因此 .swap() 函数的出现也就不足为奇了在个人资料中占有很高的地位。

关于javascript - jQuery 的交换方法时间成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4316719/

相关文章:

javascript - 每次 iframe 使用 iframe 值重新加载时更新父值

javascript - 如何获取数组中列出的所有日期?

c++ - 使用 O(1) 元素访问在 Haskell 中实现高效的类似 zipper 的数据结构

performance - 将两列合并为一列

javascript - 如何使用 JavaScript 访问 HTML 链接内容

javascript - 如何在 react native 中单击按钮打开 react native 模式?

javascript - 对象在视口(viewport)中时动画不起作用

javascript - 如何通过单击下一步按钮从列表中显示同一类的div?

javascript - ajax调用响应后html设计困惑

c++ - 64位系统的优点