可以在jQuery中多次声明相同的窗口事件吗?

时间:2012-09-25 23:58:35

标签: jquery performance events

我有一些元素在监听窗口大小调整和滚动事件。为了使代码清晰可读,我在不同的块中多次声明了相同的窗口事件,如下所示...

$('#foo')...
$(window).resize(function() {
    $('#foo')...
});

// lots of code...

$('#bar')...
$(window).resize(function() {
    $('#bar')...
});

// and so on..

我认为一般应该写成

$(window).resize(function() {
    $('#foo')...
    $('#bar')...
});

// lots of code

$('#foo')...

// lots of code

$('bar')...

我的问题是,如果我多次声明窗口事件,它对jQuery性能会有什么影响吗?

1 个答案:

答案 0 :(得分:0)

是的,但很少。 JQuery必须在resize队列中经历一次额外的回调。大不了,对吧?

考虑一下,你的代码正在进行2次函数调用:

  1. $()
  2. resize()
  3. 你可以做以下改进:

    1. 将您的$(window)调用(如注释中的@undefined)缓存到变量中。这样做会减少对$()的调用。
    2. 尝试使用on('resize', function(){})进行更好的优化(根据jQuery文档)