一千萬個為什麽

搜索

jQuery選擇器性能

我有以下兩個代碼塊。

代碼塊1

var checkboxes = $("div.c1 > input:checkbox.c2", "#main");
var totalCheckboxes = checkboxes.length;
var checkedCheckboxes = checkboxes.filter(":checked").length;

代碼塊2

var totalCheckBoxes = $("div.c1 > input:checkbox.c2", "#main").length;
var checkedCheckBoxes = $("div.c1 > input:checkbox.c2:checked", "#main").length;

以上哪一個會更快?

謝謝,

拉胡爾

最佳答案

當過濾器已應用於包含所選元素的對象時,數字1會稍快。數字2基本上執行相同的選擇器查詢兩次,第二次包括:checked 選擇器epxression。

實際上,兩者之間的速度差異不會是一個顯而易見的:)

我傾向於使用

var checkboxes = $("#main").find("div.c1 > input:checkbox.c2");
var totalCheckboxes = checkboxes.length;
var checkedCheckboxes = checkboxes.filter(":checked").length;

提供上下文將基本上解決上述問題,但使用 .find()已被證明更快(我將挖掘參考,我相信它是在John Resig的博客上)。

轉載註明原文: jQuery選擇器性能