1

根据我的测试,dojo 的功能似乎query()只从属于页面 DOM 的元素中进行选择。

例如,假设我有一个名为的节点,该节点rootNode具有一定数量的类后代someClass。这段代码:

var nodeList = query(".someclass", rootNode);

rootNode如果已从 DOM 中删除,将返回一个空 NodeList (当然,如果rootNode它是 DOM 的一部分,它将返回所有具有 class 的节点someClass

我的问题:有没有办法query()在这种情况下使用? 如果没有,处理此问题的首选方法是什么?在我看来,NodeList 的一些方法可以与过滤器(删除和放置)一起使用,但这并不完全相同。

4

2 回答 2

1

你可以得到一个道场NodeList作为你的dojo.query. 然后你可以使用nodes.mapnodes.every找到你想要的元素。

http://dojotoolkit.org/reference-guide/1.9/dojo/NodeList.html

于 2013-04-10T19:16:47.083 回答
1

结果我的回答很简单:虽然我没有在文档中找到它,但您可以简单地调用query()NodeList。例如

var nodeList = query.NodeList();
nodeList.push(rootNode);
var results = nodeList.query(yourSelector);

但是请注意:如果yourSelector是唯一 id 并且rootNode已从 DOM 中删除,则它似乎不起作用。其他类型的选择器(类、子类等)似乎也可以工作。我想知道这是否是Dojo中的一个错误......

于 2013-04-12T12:51:40.617 回答