2013-06-12 73 views
4

我想知道.filter(':last').last()之間是否有區別?.filter(':last')與.last()

對我來說,它看起來像他們一樣,但我是新來的jQuery。如果結果沒有差異,推薦哪一個,或者只是個人偏好的問題?

+1

他們做同樣的事情,對於大多數情況下,你永遠不會注意到它們之間的差異。 – adeneo

+2

第一個操作所有元素,針對每個元素運行非標準選擇器。第二個只抓取jQuery對象的最後一個元素,並將其返回到一個新對象中。 –

回答

5

last通過說「給我選擇的最後一個元素」。它只需要兩個函數調用和四行代碼即可完成。它不能以更快的方式完成。然而,更復雜的是,這是一個更靈活的系統,允許多個元素被返回,如果這是你想要的,或多個條件,或兩者的混合物。它效率低得多,因爲它必須制定出你想要的。例如,解析':last'需要一點時間,而使用last函數則是一個簡單的屬性查找。

last到目前爲止效率更高。

1

:last - 選擇最後一個匹配的元素。

last() - 將匹配元素的集合減少到集合中的最後一個元素。

正如你所看到的,他們做同樣的事情(就最終結果而言,無論如何)。

last()is slightly faster than :last(雖然你可能沒有注意到它,但它總是很好的知道)。

.filter(":last"),雖然作出最佳(性能明智)出:last,還涉及到更多的函數調用和仍比last()慢 - 雖然它確實有它的優勢(見@lonesomeday的回答那些)。

然而,我的建議是一般使用last()而不是前者。

+2

@lonesomeday對不起,我應該睡一會兒.. – lifetimes