在一段示例代码中,我编写了

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

我当时想我可以用
var as = document.querySelectorAll("a.false");
现在阅读以下事实之后
  • 假装浏览器支持不是问题(我们有垫片和填充胶)。
  • 假装您不在通用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 vs NodeIterator的问题

    最佳答案

    当gEBI,gEBN,gEBCN由于选择器复杂而无法使用时,您应该使用QSA。

    QSA与DOM解析是一个优先事项,您将如何处理返回的数据集。

    08-19 17:49