jQuery find()和children()给出了所有匹配条件的数组。 该阵列是单维的。 但我需要生成一个多维数组,以便在子容器中输入。
只需要一点提示,我怎样才能有效地实现这一目标,而不是循环孩子并生成多维数组。
$(document).ready(function () {
var inputs = $('.container .box').find('input');
// var inputs = $('.container .box :input')
console.log( inputs );
/* This will result as follow,
[
0: input.tag_name
1: input.tag_name
2: input.tag_name
3: input.tag_name
4: input.tag_name
]
But i need the following nested array
[
0: input.tag_name
1: input.tag_name
[
2: input.tag_name
[
3: input.tag_name
]
]
4: input.tag_name
]
*/
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="container">
<div class="row box">
<input type="text=" value="1" class="tag_name" />
</div>
<div class="row box">
<input type="text=" value="2" class="tag_name" />
<div class="box">
<input type="text=" value="2.1" class="tag_name" />
<div class="box">
<input type="text=" value="2.1.1" class="tag_name" />
</div>
</div>
</div>
<div class="row box">
<input type="text=" value="3" class="tag_name" />
</div>
</div>
&#13;
答案 0 :(得分:0)
使用函数递归挖掘深度,以便收集嵌套的输入元素并沿途返回数组以维护嵌套结构:
$(document).ready(function () {
function boxindexes(self) {
var bi = [];
bi.push(self.children('input')[0]);
self.children('.box').each(function(){
bi.push(boxindexes($(this)));
});
return bi;
}
var inputs = [];
$('.container').children('.box').each(function() {
inputs.push(boxindexes($(this)));
});
console.log( inputs );
});
输出:
[
0: [0: input.tag_name],
1: [
0: input.tag_name,
1: [
0: input.tag_name,
1: [0: input.tag_name]
]
],
2: [0 input.tag_name]
]