克隆表行需要使用与原始

时间:2015-08-21 06:09:24

标签: javascript jquery

我已经在这几天挣扎过了几天。我有一个很好的搜索功能,但现在我需要允许用户点击添加按钮来搜索页面上的多个内容。不幸的是,当我克隆表格行时(我改变了id和必要的名字),新的搜索不起作用。我可以在html中创建行的精确副本,它们都可以正常工作,但克隆的行并不是否具有相同的id。我认为它与jquery dom有关,但老实说,我根本不理解dom或jquery。

老实说,解释一切都相当复杂,所以我创建了一个完美地说明它的jsfiddle。如果您点击"点击此处"您会注意到在搜索框打开的前两行中的任何一行上,但是如果单击“添加”,并尝试在新创建(克隆)的行上打开搜索框,则它不起作用。我真的只想改变这段代码:

$(document).ready(function() {
        var count = $("table.people tr").length;
        $("#Add").click(function () {
            count++;
            var $clone = $("#people_table tbody tr:first").clone();
            $clone.attr({
                id: function(_, id) { return id.slice(0, - 0) + count},
                style: "display:block;", // remove "display:none"
            });
            $clone.find("input,select").each(function () {
                var name = $(this).attr("name").replace("row[0]", "row[" + count + "]");
                $(this).attr("name", name);
            });
            $clone.find("option").each(function() {
                $(this).val("").attr("id", function(_, id) { return id + count });
            });
        $("#people_table tbody").append($clone);
            alert(onDomChange);
       });
    });

主要是因为小提琴中的其他代码在我的网站上的多个地方使用(并且工作顺利),我希望尽可能保持一致。

Link to the fiddle

1 个答案:

答案 0 :(得分:2)

.clone()替换为.clone(true),这将深度克隆对象,包括事件处理程序