我使用以下代码动态在名称末尾添加行号,以使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/

10-12 12:34
查看更多