将DOM值抓取并存储到多维数组中

时间:2015-06-03 19:35:27

标签: jquery arrays

我正在构建一个动态加载包含多个字段(textareatime_fromtime_until)的条目的页面。

我需要以某种方式思考jQuery如何抓住那些'entry'多个字段并将它们存储在二维数组中,我可以将其传递给服务器端。

我有什么:

<div class="entry" id="1">
    <textarea class="report_actions">Entry1</textarea>
    <input class="time_from report_actions" value="2015-05-03 17:13">
    <input class="time_until report_actions" value="2015-06-18 17:13">
</div>

<div class="entry" id="2">
    <textarea class="report_actions">Entry1</textarea>
    <input class="time_from report_actions" value="2015-05-03 17:13">
    <input class="time_until report_actions" value="2015-06-18 17:13">
</div>

我可以使用以下内容获取一个数组中的所有内容:

var actions = $.makeArray($('.entry').find('.report_actions').map(function(index){ return $(this).val(); }));

但是这会抓取所有值并生成一维数组。我想到了两个想法。但是我缺乏使它们成为真实的知识,因此我会把它们变成问题。

  • 如何升级命令,将一个数组嵌套到另一个数组中?
  • 我如何分割我拥有的数组。即([1,2,3,4,5,6]) - &gt; ([1,2,3],[4,5,6])

编辑:感谢@tymeJV这就是诀窍。现在用alert(values[x][y])调用我可以拉出我想要的值

var values = $('.entry').map(function(){
    return [$(this).find('.report_actions').map(function(){
        return this.value;
    }).get()];
}).get();

alert(values[0][2])

1 个答案:

答案 0 :(得分:1)

只需使用两个.map函数:

var values = [];
$(".entries").each(function() {
    var childValues = $(this).children().map(function() {
        return this.value;
    }).get();
    values.push(childValues);
})

应该创建一个2D数组,每个input

下每个entries都有3个值

演示:http://jsfiddle.net/ggm866u4/

编辑:通过2次.map次调用,您必须将第二个.map包装在一个数组中,因为它会自动展平:

var values = $('.entry').map(function(){
    return [$(this).find('.report_actions').map(function(){
        return this.value;
    }).get()];
}).get();