我使用下面的代码动态地在名称末尾添加行号,以使请求参数唯一。
$("#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
,即使我设置了不同类型的输入(文本,复选框)和选择。
有没有人可以向我介绍一个更简单,更简短的方法?任何帮助都非常感激。
答案 0 :(得分:3)
: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;
});
});
答案 1 :(得分:0)
您是否尝试过使用:first
选择器?以下是jQuery网站的文档:https://api.jquery.com/first-selector。