首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XPath还是querySelector?

XPath还是querySelector?
EN

Stack Overflow用户
提问于 2009-06-30 12:12:27
回答 4查看 13.2K关注 0票数 12

XPath可以做所有querySelector能做的事情,甚至更多,那么你什么时候会选择后者呢?我还没有看到任何比较这两者的速度基准,所以现在我选择基于语法简洁性,这似乎有点武断。

编辑:我可能应该说明我正在为Firefox编写Greasemonkey脚本,所以我不担心跨浏览器的兼容性,也不希望包含任何库。

EN

回答 4

Stack Overflow用户

发布于 2009-06-30 17:51:27

您使用的是哪种浏览器?在Safari (或iPhone)中,querySelector和querySelectorAll比XPath快得多。IE根本不支持XPath,IE6和IE7也不支持querySelector。最快的跨浏览器选择器引擎是由John Resig创建的Sizzle。Sizzle也是jQuery中使用的主要选择器引擎。它在适当的地方使用querySelector,在querySelector不可用的地方使用普通的DOM方法。

票数 7
EN

Stack Overflow用户

发布于 2009-06-30 20:35:13

就功能而言,最好的选择是使用包含选择器引擎的库,其中许多库(例如MooTools、Dojo、Prototype)已经在内部使用XPath来执行某些类的查询。你应该能够依靠一个好的库为你选择快速的方法。

XPath可能可以做querySelector能做的所有事情(我认为这句话有点可疑,但这不是重点),但querySelector和querySelectorAll并不是所有浏览器都支持的,所以我们真的应该将XPath与原生DOM查询方法(即getElementsByTagName、getElementById、querySelector、标准遍历和过滤方法等)进行比较。

使用原生DOM过滤方法需要了解浏览器的怪癖和限制,除非使用库(例如jQuery或MooTools)来消除不一致,否则对于复杂的查询来说很快就会变得不切实际。原生DOM技术(无论是通过像jQuery这样的代理,还是自定义实现)经常被选择而不是XPath的原因是,它们确实提供了比XPath更大的灵活性。例如,如果您想要过滤选中的输入,“隐藏”元素或禁用的输入类就会出现,但jQuery会提供: checked,:hidden和:disabled伪类。

票数 4
EN

Stack Overflow用户

发布于 2011-04-24 23:53:21

如果您还没有学习过querySelector,但只知道XPath选择器,那么就只能使用XPath。除此之外,即使对于简单的查询,XPath语法也可能更加复杂。因此,如果你不需要XPath提供的功能,那么使用CSS选择器可能会更容易。

你应该注意两件事:

当在纯XML上使用时,

  • id选择器不能与querySelector一起使用(或者在least)
  • querySelector上不可靠)只能与浏览器当前支持的选择器一起工作,所以如果它不支持某些CSS3选择器,就不能使用这些选择器。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1063306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档