无法将嵌套的表输入元素放入jQuery数组中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法将嵌套的表输入元素放入jQuery数组中相关的知识,希望对你有一定的参考价值。
我知道这不应该是这么难,但我需要另一双眼睛,因为我的头撞在墙上。
我有一个带有ID的NESTED表,例如:
<table id="dwMeasurements_0">
<tbody>
<tr id="tDim_0">
<td colspan="2">
<strong>Total Wall Length: </strong>
</td>
<td>
<input type="text" id="Msr_0_T1" class="dwInput" value="0"> Inches and </td>
<td>
<input type="text" id="Msr_0_T2" class="dwInput" style="margin-left:2px;" value="0"> 16ths</td>
</tr>
<tr>
<td colspan="4">
<hr>
</td>
</tr>
<tr id="lDim_0_0">
<td>
<select id="ItemType_0_0">
<option>Item Type</option>
<option>Door</option>
<option>Window</option>
<option>Other</option>
</select>
</td>
<td>
<label>L-Dim: </label>
</td>
<td>
<input type="text" id="Msr_0_0_A1" class="dwInput" value="0"> Inches and </td>
<td>
<input type="text" id="Msr_0_0_A2" class="dwInput" style="margin-left:2px;" value="0"> 16ths</td>
</tr>
//MORE ROWS HERE//
</table>
我的jQuery序列化文本输入和选择元素如下:
var MeasureRowCount = $("[id^='MeasureRow_']").length; //Populated by counting parent rows
var htmlOutput = '';
var rowInputs,rowSelects;
for(var r=0;r < MeasureRowCount;r++){
rowInputs = $('#dwMeasurements_'+r+' :input').serializeArray();
rowSelects = $('#dwMeasurements_'+r).find('select').serializeArray();
$.each(rowSelects, function(i, eSelectItem){
esName = eSelectItem.name;
esVal = eSelectItem.value;
htmlOutput += //name and value from above with markup
}
}
// htmlOutput to DOM here with markup
我已经尝试了多种方法来收集输入元素,但没有工作。阵列空了。即使表是嵌套的,也不应该工作,因为我直接调用嵌套的表ID?
答案
这段代码:
for(var r=0;r < MeasureRowCount;r++){
rowInputs = $('#dwMeasurements_'+r+' :input').serializeArray();
每次循环时都会覆盖rowInputs
的值。
尝试使用jQuery.merge
来组合它们:
var rowInputs=[],rowSelects=[];
for(var r=0;r < MeasureRowCount;r++){
$.merge(rowInputs, $('#dwMeasurements_'+r+' :input').serializeArray());
另一答案
答案不是100%直观,但我应该知道......
serializeArray()
方法在收集元素时默认使用name:value
对,而我收集的元素没有任何“名称”属性,只有id。添加名称后,将根据需要填充阵列。
以上是关于无法将嵌套的表输入元素放入jQuery数组中的主要内容,如果未能解决你的问题,请参考以下文章