微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CSS和jQuery选择器速度

在jQuery中,每当遇到这样的事情:
$("div#MyDiv").....

我一般对开发者说:“不要把div放在#MyDiv的前面,ID选择器是最快的.”即

$("#MyDiv")....

这是因为后者将直接钩入document.getElementById,而不必扫描所有< div>的DOM.元素第一.

我的问题是,同样的规则适用于CSS选择器吗?即而不是:

div#MyDiv
{
}

简单来说是更快吗?

#MyDiv
{
}

(我意识到,CSS选择器是非常快的反正,所以在现实中也不会有显着差异.)

非常感谢

编辑

任何链接或引用可能对本讨论的目的有用.谢谢 :-)

解决方法

我会说,它是不太可能使任何现实世界的区别.在理论上,是的,需要少一个检查(因为div#foo真的需要一个div来匹配选择器,根据 the spec).但是在现实世界的浏览器应用程序中,它的几率有何不同呢?接近零.

也就是说,当我在HTML应用程序中看到像div#foo这样的东西时,我总是很沮丧. HTML只有一个ID类型属性(id),因此不需要进一步的资格.您使CSS选择器引擎(浏览器或jQuery的)更难以弄清楚您的意思,使选择器变得脆弱(例如,如果div成为页脚)等等,当然您也可以自己打开到一个stoopid选择器实现,无法识别它可以看看ID的东西,然后检查,看看它是否是一个div,所以去查看所有的div. (这样的实现是否存在?可能,你永远不会知道.)除了一些边缘案例,总是让我认为某人不太了解他们在做什么.

所以对我来说,速度不是主要的论据.无意义是.

原文地址:https://www.jb51.cc/css/214587.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。