javascript - 如何使用 jQuery 作为数组获取输入字段的多维数组

标签 javascript jquery arrays

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>

最佳答案

使用函数递归尽可能深入地收集嵌套输入元素并沿途返回数组以维护嵌套结构:

$(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]
]

亲自看看:http://jsfiddle.net/BloodyKnuckles/a0j0xyun/

关于javascript - 如何使用 jQuery 作为数组获取输入字段的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29055551/

相关文章:

python - 删除元组中的以下重复项

javascript - 如何在数字数组中插入零序列?

javascript - 为什么我的添加到购物车按钮出现在图像旁边而不是图像下方,即使使用换行标记也是如此?

javascript - "Process is not defined"与react-chartjs-2 CDN

javascript - 提交表单时使用 AJAX

javascript - jQuery:如何选择表格中除每行最后一个单元格之外的每个单元格?

jQuery:检查内容是否位于 iframe 内

java - 数组的所有可能组合

javascript - Angular 中关于 IE 问题的占位符

javascript - 如何用 jQuery 包裹 2 个元素?