代码之家  ›  专栏  ›  技术社区  ›  rahul

jQuery选择器性能

  •  1
  • rahul  · 技术社区  · 15 年前

    代码块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;
    

    上面哪一个更快?

    拉胡尔

    3 回复  |  直到 15 年前
        1
  •  2
  •   Russ Cam    15 年前

    当过滤器应用于已经包含选定元素的对象时,数字1会稍微快一点。数字2基本上执行相同的选择器查询两次,第二次包括 :checked

    我倾向于使用

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

    .find() 已经证明速度更快( 我会找出参考资料,我相信是在约翰·雷西格的博客上 ).

        2
  •  1
  •   Anthony    15 年前

        3
  •  0
  •   Tim Cooper    14 年前

    选择器速度。

    $("#main").find(".c2")
    

    应该是最快的解决方案。

    推荐文章