【发布时间】:2015-01-07 00:31:22
【问题描述】:
我听说querySelector 和querySelectorAll 是选择DOM 元素的新方法。在性能和浏览器支持方面,它们与旧方法 getElementById 和 getElementsByClassName 相比如何?
与使用 jQuery 的查询选择器相比性能如何?
对于使用哪种方法有最佳实践建议吗?
【问题讨论】:
-
更好地定义。它们几乎完全不同。
-
这就像在问“单尺寸扳手比活动扳手更好吗?”答案是:它们更强大、更灵活,因此在很多场合都更胜一筹,但
getElementById和getElementsByClassName仍然是它们名称所描述用途的理想选择。 -
哦,
qS/qSA可以在任何元素上下文中使用,但gEBI只能在document上下文中使用。 -
getElementById匹配id属性以查找 DOM 节点,而querySelector通过选择器搜索。因此,对于无效的选择器,例如<div id="1"></div>,getElementById('1')将起作用,而querySelector('#1')将失败,除非您告诉它匹配id属性(例如querySelector('[id="1"]')。 -
仅供阅读本文的任何人参考,但现在完全支持
querySelector和querySelectorAll。 caniuse.com/#feat=queryselector
标签: javascript jquery dom