jquery选择器与css3选择器的性能



我对使用选择器的css3(通常是简单的css选择器)相当陌生,并且很好奇这些css选择器与jquery或javascript选择器的性能比较?

假设你有这样的东西:

css版本

#someID > div:nth-child(2n) { some css .... }

jquery版本(编辑)

$("#someID").children(":nth-child(even)").css({ some css ....});

无论何时使用css选择器,或者使用jquery选择器来调整元素或元素集所涉及的css,通常会更快吗?主要是当布景变大的时候。我认为只有少数几个项目不会有太大的性能差异?

谢谢!

jQuery的选择器引擎与CSS共享大部分相同的语法,有效地扩展了选择器标准。这意味着您可以将大多数有效的CSS选择器(除了一些例外)传递给jQuery,它会很好地处理它们。

jQuery为支持选择器API的现代浏览器优化有效的CSS选择器,直接将它们传递给document.querySelectorAll()。这意味着您的jQuery选择器将具有与等效CSS选择器几乎相同的性能,唯一的开销是$().css()和选择器API调用。

对于不支持选择器API的浏览器,很明显jQuery将非常缓慢,因为它必须自己完成所有繁重的工作。更重要的是,它只会在我上面链接到的异常以及浏览器不支持的任何其他CSS选择器上失败。

然而,尽管如此,jQuery总是会慢,因为浏览器必须运行一个脚本并对其进行评估,然后才有机会应用和计算您的样式。

老实说,在所有这些之后,即使你有数百个项目,也不算什么——浏览器获取标记的时间可能比呈现样式的时间更长。如果你需要做样式,并且CSS支持它,为什么不使用CSS呢?这就是语言最初产生的原因。

纯CSS将始终更快,因为它是在浏览器中完成并优化的!

缺点是您所在的浏览器可能不支持某些选择器。请参阅http://caniuse.com/#feat=css-sel3

对我来说,如果我使用jquery意味着我想对它施加一些影响,比如像一样

$("#someID:nth-child(even)").css({ some css ....}).fadeIn('slow');

除此之外,你最好使用CSS本身,但我们几乎看不到它的区别,至少对于一个小范围的系统来说是这样。

我发现这个网站比较了不同javascript框架的选择器功能,jquery做得很好。

javascript框架选择器测试

最新更新