选择器性能-';E#id';vs'#id';-在CSS和jQuery中

选择器性能-';E#id';vs'#id';-在CSS和jQuery中,jquery,css,performance,jquery-selectors,css-selectors,Jquery,Css,Performance,Jquery Selectors,Css Selectors,在CSS和jQuery中使用选择器时,使用'E#id'和#id之间是否存在效率差异,其中E是任何HTML元素?如果是,它是否只适用于某些布局引擎和/或Javascript引擎?浏览器从右到左读取选择器,因此在id之前加前缀几乎没有什么好处;在这一点上是多余的。资料来源: 来自Mozilla 这里有一个测试你自己的方法。TL:DR;这似乎并不重要,不足以产生影响 从先前的相关进一步阅读1)认为将ID用于CSS不是一个好的做法。通过javascript操作内容时应该使用它 2) 标记名为ul.top

在CSS和jQuery中使用选择器时,使用
'E#id'
#id
之间是否存在效率差异,其中E是任何HTML元素?如果是,它是否只适用于某些布局引擎和/或Javascript引擎?

浏览器从右到左读取选择器,因此在id之前加前缀几乎没有什么好处;在这一点上是多余的。资料来源: 来自Mozilla

这里有一个测试你自己的方法。TL:DR;这似乎并不重要,不足以产生影响

从先前的相关进一步阅读

1)认为将ID用于CSS不是一个好的做法。通过javascript操作内容时应该使用它


2) 标记名为ul.top-nav或ul#top-nav的CSS选择器过度限定只会增加浏览器的开销,因为它必须同时匹配标记和类/ID。因此,避免过度限定选择器。

一些新的(我指的是最新的)浏览器有CSS性能检查器,可以让你自己测试。在我看来,使用
'E#id'
的唯一原因是如果你只想选择一个id为正确类型的元素,尽管我真的想不出有多少现实世界中的例子没有更好的方法。(记住id应该是唯一的,这样就不应该用来区分同一页上的不同元素。)
id
应该在文档中只出现一次,所以您不需要该选择器的元素名称部分。实际上
E#id
被认为是(如果不坏的话)可以避免的做法。至于JQuery,如果f关心性能,那么您应该做
document.getElementById('foo')
,而不是
$('foo')
。公认的答案是错误的……事实上,
E\id
\id
具有更高的特异性@与问题无关的书架。OP只对javascript和选择器引擎所涉及的两个选择器之间的速度差异感兴趣。。