Dojo NodeList遍历-返回的节点顺序

Dojo NodeList遍历-返回的节点顺序,dojo,Dojo,HTML 这将记录一个包含两个DOM节点的数组—一个id为“外部容器”,另一个id为“内部容器” 我想知道的是,有没有办法知道父节点在返回的数组中的显示顺序?我的测试表明没有,但这没有意义,该方法会向上或向下遍历DOM结构,对吗?我在JSFIDLE中测试了您的代码,并始终得到相同的结果: [div#内容器.容器,div#外容器.容器] 如果您真的想知道发生了什么,请检查dojo源代码中的“dojo/Nodelist遍历”类。 “parents()”方法就是这样做的: require(["dojo

HTML

这将记录一个包含两个DOM节点的数组—一个id为“外部容器”,另一个id为“内部容器”


我想知道的是,有没有办法知道父节点在返回的数组中的显示顺序?我的测试表明没有,但这没有意义,该方法会向上或向下遍历DOM结构,对吗?

我在JSFIDLE中测试了您的代码,并始终得到相同的结果:

[div#内容器.容器,div#外容器.容器]

如果您真的想知道发生了什么,请检查dojo源代码中的“dojo/Nodelist遍历”类。 “parents()”方法就是这样做的:

require(["dojo/query", "dojo/NodeList-traverse"], function(query){
    console.log(query("#some-node").parents('.container'));
});

我还没有介绍过“_getRelatedUniqueNodes”方法,但似乎“最近的”父对象会首先添加到列表中,紧跟在它的父对象之后。。。。等等这正是在我的JSFIDLE中发生的情况。

是的,这个示例总是给出相同的结果,但我的原始代码(更复杂)给出了相反的结果。无论如何,我显然需要为这个挖掘原始代码。
require(["dojo/query", "dojo/NodeList-traverse"], function(query){
    console.log(query("#some-node").parents('.container'));
});
parents: function(/*String?*/ query){
    return this._getRelatedUniqueNodes(query, function(node, ary){
        var pary = [];
        while(node.parentNode){
            node = node.parentNode;
            pary.push(node);
        }
        return pary;
    }); // dojo/NodeList
}