ID の DOM 階層を JavaScript 配列に取得しようとしています。(私はjQuery UI sortableを使用して、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 に空の文字列要素が作成されます。空でない場合の型チェックを作成するのではなく、ロジックでこれを修正するにはどうすればよいですか (とにかく良いアイデアだと私は言います)。
サンドボックス 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;
}