Javascript查询选择器与getElementById

Javascript查询选择器与getElementById,javascript,jquery,dom,Javascript,Jquery,Dom,我听说querySelector和querySelectorAll是选择DOM元素的新方法。在性能和浏览器支持方面,它们与旧方法getElementById和getElementsByCassName相比如何 与使用jQuery的查询选择器相比,性能如何 是否有最佳实践建议使用哪个本机集?更好是主观的 querySelector是较新的功能 getElementById比querySelector更受支持 querySelector比GetElementsByCassName更受支持 query

我听说querySelector和querySelectorAll是选择DOM元素的新方法。在性能和浏览器支持方面,它们与旧方法getElementById和getElementsByCassName相比如何

与使用jQuery的查询选择器相比,性能如何

是否有最佳实践建议使用哪个本机集?

更好是主观的

querySelector是较新的功能

getElementById比querySelector更受支持

querySelector比GetElementsByCassName更受支持

querySelector允许您查找具有无法用getElementById和getElementsByClassName表示的规则的元素

您需要为任何给定任务选择适当的工具

在上面的示例中,对于querySelector,请阅读querySelector/querySelectorAll。

函数getElementById和GetElementsByCassName非常具体,而querySelector和querySelectorAll则更加详细。我猜他们的表现会更差


此外,您还需要检查目标浏览器中每个函数的支持情况。它越新,缺少支持或功能有缺陷的概率越高。

定义得越好。它们几乎完全不同。这就像是问一个单一尺寸的扳手比一个可调扳手好吗?答案是:它们更强大、更灵活,因此在很多情况下都更优越,但getElementById和GetElementsByCassName对于它们的名称所描述的用途来说仍然是理想的。哦,qS/qSA可以从任何元素上下文中使用,但是gEBI只能从文档上下文中使用。getElementById匹配id属性以查找DOM节点,而querySelector通过选择器进行搜索。因此,对于无效的选择器,例如getElementById“1”将起作用,而querySelector“1”将失败,除非您告诉它匹配id属性,例如querySelector“[id=1]”。仅供阅读本文的任何人参考,但querySelector和querySelectorAll现在完全受支持@托马斯,你的链接断了。任何地方都有可用的链接吗?有几个存档版本:但该测试实际上是非常古老的2010年版,因此结果可能与更现代的引擎非常不同。存档页面实际上是动态的,允许您在当前浏览器上重新运行测试。据报道,querySelectorAll在我的浏览器上仍然要慢37%。Chrome 71-还值得注意的是getElementById返回一个实时结果,这意味着如果更改DOM,则更改将由getElementById获得的结果反映(如果在范围内),而querySelectorAll返回的节点列表是一个快照,例如,调用时的情况,结果不会反映对DOM.nodelist的后续更改。。。不是实时的,你能提供文档吗@Prins两种方法都返回元素类型。啊,我看到我打错了,请接受我的道歉!我应该在写GetElementsById的地方写GetElementsByCassName,例如,返回live resultset的是GetElementsByCassName和类似的东西。事实上,getElementsByClassName和querySelectorAll都返回一个节点列表,但在前一种情况下它是活动的,而在后一种情况下它是快照。querySelector支持:@Jasonvandermeiden-不太可能重要,可能因浏览器而异。这是一个很好的答案,下面是一些@DrorBar-Quote:不太可能重要,不同的浏览器可能会有所不同,也可以引用:这里有一些基准测试@LeiYang,但事实并非如此。