我使用以下代码动态在名称末尾添加行号,以使request参数唯一。
$("#myTable").find("tr").each(function() {
var text = $(this).find("td input:text");
var select = $(this).find("select");
var cb = $(this).find("td input:checkbox");
select.eq(0).prop("name", select.eq(0).prop("name") + counter);
text.eq(0).prop("name", text.eq(0).prop("name") + counter);
text.eq(1).prop("name", text.eq(1).prop("name") + counter);
cb.eq(0).prop("name", cb.eq(0).prop("name") + counter);
});
即使我设置了不同类型的输入(文本,复选框)并选择,是否有一种方法可以减少上面的代码,而不是指定
eq()
或index
。有谁可以向我介绍一个更简单,更简短的方法?非常感谢任何帮助。
最佳答案
:input
选择器将检索所有输入,因此对于select
和复选框,您不需要单独的子句。从那里,您可以通过为each()
方法提供一个函数来否定prop()
循环,该函数接受当前值作为可以附加到其后的参数。尝试这个:
$('#myTable :input').prop('name', function(i, v) {
return v + counter;
});
如果您需要增加
counter
变量,则仍然需要each()
循环,尽管您可以通过使用当前tr
的索引使其自动化,如下所示:$('#myTable tr').each(function(tr_i) {
$(this).find(':input').prop('name', function(inp_i, v) {
return v + tr_i;
});
});
关于jquery - 在没有eq()的情况下更新输入名称属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36999027/