我正在构建一个动态加载包含多个字段(textarea
,time_from
,time_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(); }));
但是这会抓取所有值并生成一维数组。我想到了两个想法。但是我缺乏使它们成为真实的知识,因此我会把它们变成问题。
编辑:感谢@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])
答案 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();