Javascript 如何使用';这';在queryselectorall中的选择器中
是否可以在querySelectorAll()中的选择器中使用某种类型的“this” 说明:如果我使用:Javascript 如何使用';这';在queryselectorall中的选择器中,javascript,html,dom,Javascript,Html,Dom,是否可以在querySelectorAll()中的选择器中使用某种类型的“this” 说明:如果我使用: var _childlist = document.querySelectorAll("#treeIC > li"); 我得到了我希望在我的树的第一级的结果 但如果我使用: var _ICtree = document.getElementById("treeIC"); var _childlist = _ICtree.querySelectorAll("li"); 我把所有的李牌
var _childlist = document.querySelectorAll("#treeIC > li");
我得到了我希望在我的树的第一级的结果
但如果我使用:
var _ICtree = document.getElementById("treeIC");
var _childlist = _ICtree.querySelectorAll("li");
我把所有的李牌都挂在树下了。如果我写:
var _childlist = _ICtree.querySelectorAll("> li"); // or
var _childlist = _ICtree.querySelectorAll("this > li");
它不起作用
我需要在实现中使用递归调用,这就是我需要它的原因。我知道如何解决问题,但我想知道是否有办法在querySelectorAll()中使用“this”并编写更干净的代码。不,不能将
this
用作querySelectorAll()
的参数,因为它的参数是字符串。如果此
是DOM元素,则可以执行此.querySelectorAll()
操作。为什么不将节点列表转换为数组并使用映射
或forEach
?它们提供了一个此
内置的.in,您可以使用:scope
伪选择器。但它会在不支持它的浏览器上抛出一个错误。另一种选择是像Array.prototype.filter.call(parentElement.children,function(el){return el.matches(selector)})
这样的函数,它将返回一个数组而不是一个活动节点列表。