2012-02-14 72 views
1

我正在使用jQuery 1.7.1编码这种或那种方式是否有性能优势?

我想写这个代码的可读性以及性能。在以下两种情况下,哪一种表现更好,为什么?

// BLOCK ONE 
var DivHeight = 0; 
$(".PC_SeriesDiv").each(function() { 
    var ThisDivHeight = $(this).height(); 
    if (ThisDivHeight > DivHeight) { 
     DivHeight = ThisDivHeight; 
    } 
}); 
DivHeight = DivHeight + "px"; 
$(".PC_SeriesDiv").animate({height: DivHeight}, 250); 

// BLOCK TWO 
var DivHeight = 0; 
var PC_SeriesDiv = $(".PC_SeriesDiv"); 
PC_SeriesDiv.each(function() { 
    var ThisDivHeight = $(this).height(); 
    if (ThisDivHeight > DivHeight) { 
     DivHeight = ThisDivHeight; 
    } 
}); 
DivHeight = DivHeight + "px"; 
PC_SeriesDiv.animate({height: DivHeight}, 250); 

我的问题真的可以归结为是否有这样做的任何好处:

var PC_SeriesDiv = $(".PC_SeriesDiv"); 

建议将不胜感激。谢谢!

回答

2

是的,保持对jQuery集合的引用会提升性能。 Reference.

它已成为习惯用$前缀保存的jQuery的集合,因此你可以这样做:

var $PC_SeriesDiv = $(".PC_SeriesDiv"); 

另外,如果在HTML的所有元素与类的PC_SeriesDiv是同一类型(即,<div> s),使选择器更有效率$("div.PC_SeriesDiv");

+0

感谢您的建议和示例。我完全实现了这一切。 – 2012-02-28 17:03:18

2

缓存PC_SeriesDiv中的值是可取的,因为块1需要JQuery搜索DOM两次,块2更有效。

+0

感谢您的信息。我相信你是对的。 – 2012-02-28 17:03:33

2

第二种方式(中间变量)给你在将来更灵活 - 如果你改变了元素的名字,你只需要在处理它的代码中改变一个地方。在性能方面,我非常怀疑你可以感受到它的差异 - 在内部它可以被替代为参考或者仍然可以忽略不计。事实上,它可能会更快,因为您不需要再次查找。

+0

我怀疑我会看到很多改进。但是,如果页面上存在大量错误代码,良好的习惯会有所帮助。感谢您的回应! – 2012-02-28 17:04:58