jQuery选择器规则是否针对较新的浏览器进行了更改?

时间:2012-05-14 19:47:41

标签: javascript jquery html performance

我刚刚运行this jsPerf test in Chrome 18,发现尽管myriad of resourcesotherwise .class的效果明显好于tag.class }}。我知道this questions was recently asked on SO但除了“不要使用jQuery”之外没有明确/令人满意的答案。有人能否对最新的最佳做法有所了解?

注意:假设清晰度和语义都得到了处理(例如,我在一个名为item-link的锚标记上有一个类,它将与a.item-link一样清晰,.item-link {{1}} })。

2 个答案:

答案 0 :(得分:4)

您正在询问最佳做法,因此我更倾向于采用更具可读性的方式,而不是可能会减少脚本运行时间的微秒。

答案 1 :(得分:1)

最新的浏览器有更好的getElementsByClassName实现,因此当你使用jquerys类选择器时,它会立即回退到这个方法,从而产生性能差异和收益。

当你在它之前使用标签选择器时,jquery首先需要处理你的选择器,然后将其分解为不同的标记然后继续搜索控件,不知道这里遵循的是什么顺序,是否所有元素都带有首先检索className,然后应用其他选择器,反之亦然,但我相信你可以通过查看jquery源代码来研究它。

关于辩论是否可读,我不确定你知道选择器是什么控件可以获得什么,如果这就是你需要的那么为了上帝的缘故更好地为你的类命名..下一步用标记名前面的ID? :/