jquery - CSS 和 jQuery 选择器速度

标签 jquery css jquery-selectors css-selectors

在 jQuery 中,每当我遇到这样的事情时:

$("div#MyDiv").....

我通常对开发人员说:“不要费心将 div 放在 #MyDiv 前面,ID 选择器是最快的。”即

$("#MyDiv")....

这是因为后者会直接 Hook 到document.getElementById而不是必须为所有 <div> 扫描 DOM元素优先。

我的问题是,相同的规则是否适用于 CSS 选择器? IE。而不是:

div#MyDiv
{
}

简单的更快吗?:

#MyDiv
{
}

(我意识到 CSS 选择器无论如何都非常快,所以实际上两者都不会产生显着差异。)

非常感谢

编辑

任何链接或引用资料都可能对本次讨论有用。谢谢:-)

最佳答案

我会说它极不可能会在现实世界中产生任何差异。理论上,是的,需要的检查更少(因为根据 the specdiv#foo 确实需要是 div 才能匹配选择器)。但它在现实世界的浏览器应用程序中产生真正差异的几率是多少?接近于零。

就是说,当我在 HTML 应用程序中看到类似 div#foo 的东西时,我总是感到畏缩。 HTML 只有一个 ID 类型属性(id),因此不需要进一步限定。你让 CSS 选择器引擎(浏览器的或 jQuery 的)更努力地工作来弄清楚你的意思,你让选择器变得脆弱(如果 div 变成了 footer,因为实例)等,当然,您确实让自己对一个愚蠢的选择器实现敞开大门,该实现无法识别它可以通过 ID 查找某些内容,然后然后检查以查看如果它是一个 div,那么将浏览所有的 div。 (这样的实现是否存在?可能,你永远不知道。)除了一些边缘情况,它总是让我觉得有人不太清楚他们在做什么。

所以对我来说,速度不是主要论点。毫无意义是。 ;-)

关于jquery - CSS 和 jQuery 选择器速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4095007/

相关文章:

javascript - addClass 到当前 li 元素并 removeClass

html - 如何将静态图像添加到表格

html - 使用 object-fit 将 div 放在图像的顶部

javascript - 在 string.split 中查找标记的复杂 jquery 选择器

jquery - 使用 json 提要在 div 中注入(inject)背景图像

javascript - 使用 JQuery 的语义 UI 下拉列表 - 如何使用 JQuery 初始化语义 UI 下拉列表

jQuery 在选中复选框时检索数据

jQuery 仅当容器不具有特定类时才选择子级

jquery - 浏览器在动画/移动元素上未触发鼠标悬停/鼠标输入

javascript - 设置 header 时 Jquery Ajax 调用出现 CORS 错误