2012-03-12 52 views
1

在jQuery中,執行速度更快:$("li").last()$("li:last-child")

回答

10

雖然兩者都是在他們做了什麼不同,但這裏是結果我從jsperf有:

http://jsperf.com/li-last-vs-li-last-child

enter image description here

$( 「李」)最後()

28,752 
±8.59% 
fastest 

And

$( 「李:最後的孩子」)

21,930 
±4.01% 
24% slower 

所以$("li").last()更快。


FYI $("li").last()選擇絕對最後一個元素而$("li:last-child")選擇每最後一個元素在一系列分組元素。這也很明顯,$("li").last()應該更快。

+0

他們會如何給出不同的結果? – 2012-03-12 08:06:07

+2

@KevinBurke:想象一下,在你的文檔中你有多個「ul li」元素。 $(「li」)。last()'會選擇最後一個'ul'的最後一個'li',而$(「li:last-child」)'會給你每個' ul'元素在頁面上。 – Sarfraz 2012-03-12 08:08:31

4

這兩者並不等同。

.last()將始終返回單個元素; :last-child可能會匹配多個元素(如果每個元素具有不同的父元素(因此是其各自父元素的最後一個子元素))。

也就是說,.last()稍微快一點,如果您只有一個父元素用於所有您選擇的元素。

+0

@Thilo - 我是;我剛剛公佈了最初的聲明,而我正在制定其餘的。 – Amber 2012-03-12 08:09:49