clone()不工作(对我来说)

时间:2011-11-01 17:18:32

标签: jquery

用户输入值对。我需要复制最后一组并重新编号它们的ID。下面的函数运行,但新的div不会出现。我在某处杂草丛生中...感谢您的帮助!

    $('#addparm').click(function (event) {
        event.preventDefault();
        var maxSeq = $('#maxseq').attr("seq");
        var lastDiv = $('#pct[' + maxSeq + ']').parent();
        $('#maxseq').attr("seq", ++maxSeq);
        var newDiv = $(lastDiv).clone(true);
        $(lastDiv).after(newDiv);
        $(newDiv).fadeIn('slow');
    });

这是HTML:

    ... 
    <div id="bkp[8]">
        <input seq="8" id="pct[8]" name="pct" type="text" value="0.28" />
        <input seq="8" id="amt[8]" name="amt" type="text" value="43.2" />
        <input seq="8" id="use[8]" name="use" type="hidden" value="yes" />
    </div> 

    <div id="bkp[9]">
        <input seq="9" id="pct[9]" name="pct" type="text" value="0.31" />
        <input seq="9" id="amt[9]" name="amt" type="text" value="41.4" />
        <input seq="9" id="use[9]" name="use" type="hidden" value="yes" />
    </div> 
<input type="hidden" id="maxseq" seq="9" />
<a id="addparm" href="javascript:void(0)">Add</a>

1 个答案:

答案 0 :(得分:3)

克隆工作正常,但你的选择器找不到任何操作的东西。

根据HTML specs,您不能在元素的ID中使用方括号。此外,查找ID为方括号的元素的选择器与您认为的不匹配。

选择器:

#foo[5]

与ID为foo[5]的元素不匹配,而是查找element with ID fooattribute named 5

这意味着lastDiv持有一个空的jQuery集合,因此不会克隆任何内容,也不会附加任何内容。

解决方案是退出选择器中的方括号,同时保持不正确的ID attr值(不推荐),或修改ID值以符合规范并将代码调整为新的ID格式。