如果我希望克隆的元素具有不同的名称,应该使用什么代替.clone?

问题描述

| 我正在使用一种表单,在该表单中用户将能够根据需要添加任意数量的元素,问题是,当我使用克隆进行操作时,所有创建的元素都具有相同的名称,因此无法智能地检索到用PHP进一步处理。我如何找到解决方法? 这是我的html:
<form id=\"form\" action=\"/create/table\" method=\"post\">
<table class=\"admtable,reportable\">
        <caption>Admins</caption>
        <thead>
            <tr>
                <th>Name</th>
                <th>Username</th>
                <th>Email</th>
                <td><button class=\"add\">Add</button></td>
            </tr>
        </thead>
        <tbody>
            <tr class=\"prototype\">
                <td><input type=\"text\" name=\"name[]\" value=\"\" /></td>
                <td><input type=\"text\" name=\"username[]\" value=\"\" /></td>
                <td><input type=\"text\" name=\"email[]\" value=\"\" /></td>
                <td><button class=\"remove\">Delete</button></td>
            </tr>
    </table>


    <table class=\"usrtable,reportable\">
        <caption>Users</caption>
        <thead>
            <tr>
                <th>URL</th>
                <th>Keyword</th>
                <th>Link</th>
                <td><button class=\"add\">Add</button></td>
            </tr>
        </thead>
        <tbody>
            <tr class=\"prototype\">
                <td><input type=\"text\" name=\"name[]\" value=\"\" /></td>
                <td><input type=\"text\" name=\"username[]\" value=\"\" /></td>
                <td><input type=\"text\" name=\"email[]\" value=\"\" /></td>
                <td><button class=\"remove\">Delete</button></td>
            </tr>
    </table> </form>
这是到目前为止的jQuery代码:
$(document).ready(function() {

var className = $(this).closest(\'table\').attr(\"add\"); //??
// Add button functionality
$(\"button.add\").click(function() {

    var master = $(this).closest(\"table\");

    // Get a new row based on the prototype row
    var prot = master.find(\".prototype\").clone(true);
    prot.attr(\"class\",\"\");

    master.find(\"tbody\").append(prot);
});

// Remove button functionality
$(\"button.remove\").live(\"click\",function() {
    $(this).closest(\"tr\").remove();
});
});
    

解决方法

        为什么不使用.attr()setter自己更改结果对象的ID和名称? 这样,您可以很好地控制正在发生的事情,没有时髦的名称或未知的ID。 编辑:或者也许您想尝试http://api.jquery.com/category/plugins/templates/     ,        为什么不为每个表使用不同的名称集?例如,
user_names[]
admin_names[]
。然后,服务器端将具有用户名列表,管理员名称列表等,而不是第一个用户名+第一个管理员名称的列表。 另外,请注意,您不需要逗号来分隔多个类名。我很惊讶没有破坏CSS。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...