用户输入值对。我需要复制最后一组并重新编号它们的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>
答案 0 :(得分:3)
克隆工作正常,但你的选择器找不到任何操作的东西。
根据HTML specs,您不能在元素的ID中使用方括号。此外,查找ID为方括号的元素的选择器与您认为的不匹配。
选择器:
#foo[5]
与ID为foo[5]
的元素不匹配,而是查找element with ID foo
和attribute named 5
。
这意味着lastDiv
持有一个空的jQuery集合,因此不会克隆任何内容,也不会附加任何内容。
解决方案是退出选择器中的方括号,同时保持不正确的ID attr值(不推荐),或修改ID值以符合规范并将代码调整为新的ID格式。