var root = $("#root")[0];
var nodeList = [];
function appendChildren(node, array) {
if (node.hasChildNodes()) {
for (var i = 0; i < node.children.length; i++) {
if (node.children[i].hasChildNodes()) {
appendChildren(node.children[i], array);
array.push(node.children[i]);
}
}
}
}
appendChildren(root, nodeList);
測試here。
遞歸解決方案。這可以使用功能風格編程更優雅地完成。這個依賴於underscore.js的跨瀏覽器.reduce
的實現。如果您定位較新的瀏覽器,則可以依賴array.reduce。
function nodeToChildren(node) {
if (node.hasChildren()) {
_.reduce(node.children, function (memo, val) {
return memo.concat(nodeToChildren(val));
}, [].concat(node));
} else {
return node;
}
}
var array = nodeToChildren(root);
給我一些時間來測試/調試這個。
我忘了jQuery選項
var array = $(root).find("*").toArray()
肯定,並感謝 – Nilesh 2011-01-27 13:09:28