0

可能重复:
使用 $this 代替 $(this) 是否提供了性能增强?

所以我正在创建一个像画廊一样占据整个屏幕的剧院,我根据窗口大小更改 div 和图像的大小。为此,我一直在使用:

function setSizes()
{
var theaterHeight = $(".theater-wrapper").height();
var theaterWidth = $(".theater-wrapper").width();
}

$(window).on("resize", window, function() {
        setSizes();
    }); 

这基本上就是我正在做的选择元素以获取尺寸以设置高度和宽度等,但是窗口调整大小确实有点滞后,我最终有很多选择器并更改了很多 div和图像都在这个函数中,有时初始调用也不能正常工作,反之亦然。所以我的问题是组合选择器会带来更好的性能吗?

像:

var $theaterWrapper = $(".theater-wrapper");

var theaterHeight = $theaterWrapper.height();
var theaterWidth = $theaterWrapper.width();
4

2 回答 2

1

显然确实如此,因为在后一种情况下,您遍历 DOM 的时间少了一次。

如果您使用的选择器是静态选择器,则保存并存储选择器始终是更好的选择...

它还导致代码更小更精简。

于 2012-10-11T04:03:06.043 回答
1

这是一个 JSPerf,您可以按原样使用或修改以更接近您的具体情况:

http://jsperf.com/combined-jquery-selectors

在我的浏览器(Mac 上的 Chrome)中,您的原始版本运行速度比您建议的优化慢约 4%。在我使用 Safari 的 iPhone 上,它慢了大约 6%。但在我 Mac 上的 Firefox 上,相差 14%。

所以看起来你提出的改进实际上更好。

于 2012-10-11T04:07:48.867 回答