我正在尝试将 id 的 DOM 层次结构放入 javascript 数组中。(我正在使用可排序的 jQuery UI 重新排列 DIV 及其 toArray 并序列化呈现一个平面(非分层)结果)。
基于其他 SOF jfiddle 解决方案等构建的代码,这是我的沙箱:
更新 http://jsfiddle.net/rfwkQ/2/
如何遍历 DOM 子节点并将其 id 记录到多维数组中?
编辑:
function getChildren(elem) {
var parent = [];
if ($(elem).children().length !== 0) {
$(elem).children().each(function() {
if ($(this).find('> div').children().size() !== 0) {
var child = getChildren(this);
parent.push(child);
} else {
parent.push(this.id);
}
});
return parent;
}
}
我已经组装了上面的函数来尝试迭代 Div 和他们的孩子。返回多维数组中的 Div。
进一步的问题 这会在更高级别的嵌套 div 中创建一个空字符串元素。我怎样才能在我的逻辑中解决这个问题,而不是创建一个 if not empty 类型检查(无论如何这都是一个好主意,我说)。
沙盒 2.0:链接更新如下
终于解决了(感谢 freenode irc 上 #jquery 上的“shoky”)
function getChildren(elem) {
var parent = [];
$(elem).children('div').each(function() {
parent.push(
$(this).children('div').length ? getChildren(this) : this.id);
});
return parent;
}