何时使用querySelectorAll

Ray*_*nos 9 javascript dom qsa dom4

在我写的一段代码中

var as = toArray(document.getElementsByClassName("false")).filter(function (el) {
    return el.tagName === "A";
});
Run Code Online (Sandbox Code Playgroud)

我以为我可以替换它

var as = document.querySelectorAll("a.false");

现在看完以下事实

  • 假装浏览器支持不是问题(我们有垫片和polyfill).
  • 假装你没有在你的通用jQuery心态中使用QSA来获取每个元素.
  • 我要写,qsa而不是document.querySelectorAll因为我很懒.

问:我应该什么时候支持QSA而不是常规方法?

很明显,如果你做的qsa("a")或者qsa(".class")qsa("#id")你就错了,因为有更好的方法(byTagName,byClassName,byId).

同样清楚的是,这qsa("div > p.magic")是一个明智的用例.

问题:但是qsa("tagName.class")QSA 是一个很好的用例吗?

除此之外,还有一些叫做的东西 NodeIterator

我问了一个关于QSA和NodeIterator的问题

Ray*_*nos 2

当 gEBI、gEBN、gEBCN 由于选择器复杂而不起作用时,您应该使用 QSA。

QSA 与 DOM 解析取决于偏好以及您将如何处理返回的数据集。