什么是最快的选择器

时间:2011-08-16 23:35:41

标签: jquery

试图改善我的选择器。我有很多行,但我需要排除具有“table_row valuetemplate”类的行。

<table>      
    <tr class="table_row"></tr>
    <tr class="table_row"></tr>
    <tr class="table_row"></tr>
    <tr class="table_row valuetemplate"></tr>
</table>

我很快就知道了:

$(".table_row")

这个慢得多:

$(".table_row:not(.valuetemplate")

这是排除的唯一方法吗?

2 个答案:

答案 0 :(得分:5)

$(".table_row:not(.valuetemplate)")似乎最快(在Chrome 13&amp; FF 5中测试,来自Chrome的结果)

http://jsperf.com/not-jquery-selectors

$(".table_row").not('.valuetemplate')

  • 17,977次/秒
  • ±0.13%
  • 慢29%

$(".table_row:not(.valuetemplate)")

  • 25386
  • ±1.89%
  • 最快

$("table").children(":not(.valuetemplate)");

  • 17894
  • ±0.36%
  • 慢30%

答案 1 :(得分:0)

$(".table_row").not(".valuetemplate");

我不确定它是否更快,但我知道作为jQuery最佳实践,使用方法而不是专门的选择器通常更快。 编辑:但不是在这种情况下

例如:

$(".thing .subthing")

慢得多
$(".thing").find(".subthing");