所以我有下表,当我向表中添加一行时,我想将所有的name属性设置为一个新值。 (您可能已经猜到了:我使用按钮添加和删除行,并根据行索引计算新的名称属性。)
<table id="orderstable" >
<tbody>
<tr>
<td align="top"><img src="/images/images/add_button_sm.gif" id="add_" align="top" border="0">
<img src="/images/images/delete_button_sm.gif" id="del_" border="0">
</td>
<td><input name="orderBoxes[0].A" size="3" value="0.0" type="text"></td>
<td><input name="orderBoxes[0].B" size="3" value="0.0" type="text"></td>
<td><input name="orderBoxes[0].C" size="3" value="0.0" type="text"></td>
<td><select name="orderBoxes[0].D">
<option value="fifty">50</option>
<option value="oneHundred" selected="selected">100</option>
<option value="twoHundred">200</option>
<option value="threeHundred">300</option></select>
</td>
</tr>
</tbody>
</table>
我尝试使用.each获取所有元素,然后获取input.name attribbute ....但我无法让它工作。有什么想法吗?我的代码可能不是最有效的...我仍然是一个菜鸟:
$("#orderstable > tbody > tr > td > img[id=add_]").click( function(event){
var row = $(this).closest("tr").get(0);
var rowCopy=$(row).clone(true);
$(row).closest("tbody").append(rowCopy);
$('#orderstable tbody>tr:last>td').each(function(){
$(this.input).attr(name);
}).val = "test";
row.className+="add_";
答案 0 :(得分:10)
这将获取最后一行和所有输入表单元素。然后,您只需通过name
$(this).attr('name')
即可
$('#orderstable tr:last td :input').each(function(){
$(this).attr('name', 'setyournamehere')
})
答案 1 :(得分:0)
您的选择器似乎不正确。您的表格没有ID“ordertable”,并且没有<tbody>
。
答案 2 :(得分:0)
在.each
函数中,您需要使用参数来获取元素并找到输入:
$("#orderstable > tbody > tr > td > img[id=add_]").click( function(event){
var row = $(this).closest("tr").get(0);
var rowCopy=$(row).clone(true);
$(row).closest("tbody").append(rowCopy);
$('#orderstable tbody>tr:last>td :input').each(function(i, e){
var n = $(e).attr('name');
alert(n);
}).val = "test";
row.className+="add_";
});