2012-02-14 117 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

相關問題