从我的测试来看,似乎dojo的query()
函数只从作为页面DOM一部分的元素中进行选择。
例如,假设我有一个名为rootNode
的节点,其中包含一些具有类someClass
的后代。这段代码:
var nodeList = query(".someclass", rootNode);
rootNode
,将返回空的NodeList(当然,如果rootNode
是DOM的一部分,它将返回类{{1}的所有节点}。
我的问题:在这种情况下有没有办法使用someClass
?如果没有,处理此问题的首选方法是什么?在我看来,NodeList的一些方法可以与过滤器一起使用(删除和放置),但这并不完全相同。
答案 0 :(得分:1)
您可以获得道场 NodeList
作为dojo.query
的返回结果。然后,您可以使用nodes.map
或nodes.every
来查找所需的元素。
http://dojotoolkit.org/reference-guide/1.9/dojo/NodeList.html
答案 1 :(得分:1)
我的回答非常简单:虽然我没有在文档中找到它,但您只需在NodeList上调用query()
即可。 e.g。
var nodeList = query.NodeList();
nodeList.push(rootNode);
var results = nodeList.query(yourSelector);
但是请注意:如果yourSelector
是唯一ID并且rootNode
已从DOM中删除,则它似乎不起作用。其他类型的选择器(类,儿童等)似乎工作。我想知道这是Dojo中的一个错误......