我有一个jQuery插件,我想将其转换为纯javascript,以便我可以放弃对jQuery的依赖。我坚持的插件的一部分是这个位,它返回按深度排序的DOM元素(例如,身体的孩子,然后是孙子,然后是曾孙子等等)
var first = $('body'),
output = [];
while(first.length != 0) {
output = $.merge(output, first);
first = first.children();
}
基本上我只需要$('body')
,$.merge
和children()
的纯javascript版本来帮助我。
非常感谢任何帮助
答案 0 :(得分:0)
好的,我自己弄清楚了,最后它很简单。
// Every Element in the DOM.
var allElements = document.getElementsByTagName('*'),
// All the Element's children sorted by depth,
// ie. body, then body's children, grandchildren,
// so on and so forth.
sortedByDepth = [];
// for every element
for(var i = 0; i<allElements.length; ++i) {
// grab Its children
var allChildren = allElements[i].children;
// for every grabbed child
for(var j = 0; j<allChildren.length; ++j){
// Add it to the sortedByDepth array
sortedByDepth = sortedByDepth.concat(allChildren[j]);
}
}
console.log(sortedByDepth);