在我写的一段示例代码中
var as = toArray(document.getElementsByClassName("false")).filter(function (el) {
return el.tagName === "A";
});
我在想我可以用
代替它var as = document.querySelectorAll("a.false");
在阅读了以下事实之后
- 假装浏览器支持不是问题(我们有 shim 和 polyfill)。
- 假装您不在您应该使用 QSA 获取每个元素的通用 jQuery 思维模式中。
- 我打算写
qsa
而不是document.querySelectorAll
因为我很懒。
问题:我什么时候应该优先使用 QSA 而不是常规方法?
很明显,如果您执行 qsa("a")
或 qsa(".class")
或 qsa("#id")
你做错了,因为有更好的方法(byTagName、byClassName、byId)。
很明显,qsa("div > p.magic")
是一个明智的用例。
问题:但是 qsa("tagName.class")
是 QSA 的一个很好的用例吗?
此外,还有这些东西叫做 NodeIterator
我问了一个关于 QSA vs NodeIterator 的问题
最佳答案
当 gEBI、gEBN、gEBCN 不起作用时,您应该使用 QSA,因为您的选择器很复杂。
QSA 与 DOM 解析是一个偏好问题,以及您将如何处理返回的数据集。
关于javascript - 何时使用 querySelectorAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7941172/