XPath可以做所有querySelector能做的事情,甚至更多,那么你什么时候会选择后者呢?我还没有看到任何比较这两者的速度基准,所以现在我选择基于语法简洁性,这似乎有点武断。
编辑:我可能应该说明我正在为Firefox编写Greasemonkey脚本,所以我不担心跨浏览器的兼容性,也不希望包含任何库。
发布于 2009-06-30 17:51:27
您使用的是哪种浏览器?在Safari (或iPhone)中,querySelector和querySelectorAll比XPath快得多。IE根本不支持XPath,IE6和IE7也不支持querySelector。最快的跨浏览器选择器引擎是由John Resig创建的Sizzle。Sizzle也是jQuery中使用的主要选择器引擎。它在适当的地方使用querySelector,在querySelector不可用的地方使用普通的DOM方法。
发布于 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伪类。
发布于 2011-04-24 23:53:21
如果您还没有学习过querySelector,但只知道XPath选择器,那么就只能使用XPath。除此之外,即使对于简单的查询,XPath语法也可能更加复杂。因此,如果你不需要XPath提供的功能,那么使用CSS选择器可能会更容易。
你应该注意两件事:
当在纯XML上使用时,
https://stackoverflow.com/questions/1063306
复制相似问题