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结构,对吧?
答案 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中发生的事情。