2012-09-13 27 views
0

哪個會有更好的表現?有更好的性能的jQuery?

$('input[data-confirm],a[data-confirm],button[data-confirm]'); 

$('[data-confirm]'); 

顯然$('[data-confirm]')版本選擇的是更加靈活,這將意味着jQuery有掃描頁面中的每一個元素,看它是否有數據確認屬性。我會更好地使用班級嗎?我喜歡使用data-confirm,因爲我可以把它放在價值中。

<input type="submit" data-confirm="Are you sure you want to do this sir?" /> 
+1

向您自己介紹http://jsperf.com – zerkms

+2

性能差異將與您的確切HTML和特定瀏覽器有很大關係。一個HTML頁面有數千個不是'input','a'或'button'的HTML元素,會導致第二個選項比沒有輸入的選項慢。對所需元素進行上課並基於此進行查詢將會使情況之間的差異變小很多。 – jfriend00

回答

3

爲什麼不使用類和data-confirm,這將使你要具體,並使用data-confirm屬性來精確定位你想要的確切元素,而無需通過其他一切jQuery的樣子。這將確保無論您的瀏覽器如何,您的定位都會更快。如果您使用id而非類,則可能再次關閉幾納秒。

0

這取決於瀏覽器支持的內容。如果選擇器可以切換到瀏覽器進行評估,則要麼足夠快。

如果不是,第一個將會更快,因爲內置了函數來查找元素,可以被sizzle引擎使用。對於第二個,它將不得不遍歷文檔中的所有元素。

1

正如@Guffa所說,它確實取決於瀏覽器。使用Chrome測試21.0.1180.89,該屬性等於選擇是稍快

這裏的jsperf:http://jsperf.com/attrvstag

+0

我在這種測試中遇到的主要問題(儘管產生了令人滿意的結果)是它並沒有真正考慮到dom元素的全部數組。 –