javascript - 何时使用 querySelectorAll

标签 javascript dom qsa dom4

在我写的一段示例代码中

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/

相关文章:

javascript - .insertBefore() 在一个方向上起作用,但在另一个方向上不起作用

javascript - 使用表 ID 删除动态 HTML 表?

php - 如何检测和删除不必要的 xmlns :<something> attributes in PHP DOM?

.htaccess - 为什么在 .htaccess 中使用 [QSA] 时 $_POST 为空?

javascript - IE7 : How do I create a real NodeList?

javascript - 无法使用 json 链接获取某些 youtube 视频的统计信息

javascript - 用户在文本框中按下回车的 JQuery 事件?

javascript - Famo.us Scrollview + TouchSync - 使 ScrollView/TouchSync 意识到旋转 Z 变换

javascript - 按下切换按钮会影响 jQuery 中 div 的位置