3

我刚刚在 Chrome 18 中运行了这个 jsPerf 测试,发现它的.class性能明显优于tag.class尽管无数 资源另有说明。我知道这个问题最近在 SO 上被问到,但除了“不要使用 jQuery”之外没有明确/令人满意的答案。有人可以阐明最新的最佳实践吗?

注意:假设清晰度和语义得到了照顾(例如,我在锚标记上有一个类,称为它会像它item-link一样清晰地脱落)。a.item-link.item-link

4

2 回答 2

4

您在询问最佳实践,因此我会更倾向于更具可读性的方式,而不是可能将脚本运行时缩短一微秒的方式。

于 2012-05-14T19:50:29.573 回答
1

最新的浏览器有更好的实现,getElementsByClassName因此当您使用 jquerys 类选择器时,它只会立即回退到此方法,因此性能差异和增益。

当你在它前面加上一个标签选择器时,jquery首先需要处理你的选择器,然后将它分解为不同的标记,然后它开始搜索控件,不确定这里遵循什么顺序,是否检索到所有具有 className 的元素首先应用附加选择器,反之亦然,但我相信您可以通过查看 jquery 源代码来研究它。

关于辩论是否可读,我不确定通过知道选择器在什么控件上,你会获得什么,如果这是你需要的,那么为了上帝的缘故,最好更好地命名你的类。接下来在 ids 之前是什么标签名称??:/

于 2012-05-14T19:53:52.900 回答