我刚刚在 Chrome 18 中运行了这个 jsPerf 测试,发现它的.class
性能明显优于tag.class
尽管有无数 资源另有说明。我知道这个问题最近在 SO 上被问到,但除了“不要使用 jQuery”之外没有明确/令人满意的答案。有人可以阐明最新的最佳实践吗?
注意:假设清晰度和语义得到了照顾(例如,我在锚标记上有一个类,称为它会像它item-link
一样清晰地脱落)。a.item-link
.item-link
我刚刚在 Chrome 18 中运行了这个 jsPerf 测试,发现它的.class
性能明显优于tag.class
尽管有无数 资源另有说明。我知道这个问题最近在 SO 上被问到,但除了“不要使用 jQuery”之外没有明确/令人满意的答案。有人可以阐明最新的最佳实践吗?
注意:假设清晰度和语义得到了照顾(例如,我在锚标记上有一个类,称为它会像它item-link
一样清晰地脱落)。a.item-link
.item-link
您在询问最佳实践,因此我会更倾向于更具可读性的方式,而不是可能将脚本运行时缩短一微秒的方式。
最新的浏览器有更好的实现,getElementsByClassName
因此当您使用 jquerys 类选择器时,它只会立即回退到此方法,因此性能差异和增益。
当你在它前面加上一个标签选择器时,jquery首先需要处理你的选择器,然后将它分解为不同的标记,然后它开始搜索控件,不确定这里遵循什么顺序,是否检索到所有具有 className 的元素首先应用附加选择器,反之亦然,但我相信您可以通过查看 jquery 源代码来研究它。
关于辩论是否可读,我不确定通过知道选择器在什么控件上,你会获得什么,如果这是你需要的,那么为了上帝的缘故,最好更好地命名你的类。接下来在 ids 之前是什么标签名称??:/