在我写的一段示例代码中
var as = toArray(document.getElementsByClassName("false")).filter(function (el) {
return el.tagName === "A";
});
我在想我可以用
var as = document.querySelectorAll("a.false");
现在在阅读以下事实后
- 假装浏览器支持不是问题(我们有 shims 和 polyfills)。
- 假装你不在你的通用 jQuery 思维模式中,你应该使用 QSA 来获取每个元素。
- 我要写
qsa
而不是document.querySelectorAll
因为我很懒。
问题:我什么时候应该优先使用 QSA 而不是常规方法?
很明显,如果你做错了,或者qsa("a")
你做错了,因为有更好的方法(byTagName、byClassName、byId)。qsa(".class")
qsa("#id")
很明显,这qsa("div > p.magic")
是一个合理的用例。
问题:但是qsa("tagName.class")
QSA 是一个好的用例吗?
此外,还有这些东西叫做NodeIterator
我问了一个关于QSA 与 NodeIterator的问题