使用“:not”和“.not()”选择器之间的性能差异?

以下两行之间是否存在速度/效率差异?

$("table td:not(:first-child)") 

 $("table td").not(":first-child") 

我认为第一个会更好,因为它是删除对象,但是有实际的差异并且它是实质性的。

谢谢

正如你在jsperf测试中看到的那样 :not平均:not快两倍。 总体而言,这种性能可能只占整体执行时间的很小一部分。

jquery文档声明:

与将复杂选择器或变量推送到:not()选择器filter相比,.not()方法最终会为您提供更多可读选择。 在大多数情况下,这是一个更好的选择。

所以真的由你决定你获得的一秒的分数是否超过可读性。

取决于浏览器。

支持querySelectorAll浏览器将通过…获得性能提升

 $("table td:not(:first-child)") 

…因为它是一个有效的选择器。 较旧的浏览器(IE7及更低版本)不会。

你需要小心:not()选择器。 jQuery(Sizzle)使用非标准选择器扩展它,因此很容易打破qSA