Dojo NodeList-traverse - 返回的节点顺序

时间:2014-03-31 14:05:57

标签: dojo

HTML

<div id="outer-container" class="container">
    <div id="inner-container" class="container">
        <div id="some-node"></div>
    </div>
</div>

JS

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

这将记录一个带有两个DOM节点的数组 - 一个具有id“outer-container”的节点,另一个具有id“inner-container”的节点。

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

1 个答案:

答案 0 :(得分:0)

我在JSFiddle中测试了你的代码并且总是得到相同的结果:

[div#inner-container.container, div#outer-container.container]

如果您真的想知道会发生什么,请检查&#34; dojo / Nodelist-traverse&#34; Dojo源中的类。 这就是&#34;父母()&#34;方法确实:

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
}

我还没有通过&#34; _getRelatedUniqueNodes&#34;方法,但似乎&#34;最接近&#34;父级首先被添加到列表中,跟随它的父级......等等。这正是我的JSFiddle中发生的事情。