Javascript 使用jQuery克隆DIV
我有以下Javascript:Javascript 使用jQuery克隆DIV,javascript,jquery,html,Javascript,Jquery,Html,我有以下Javascript: $("div.duplicate-fields:last-child").clone().find('input').each(function() { this.name = this.name.replace(/\[(\d+)\]/,function(str,p1){return '[' + (parseInt(p1,10)+1) + ']'}); this.value = ""; this.checked = false; }).re
$("div.duplicate-fields:last-child").clone().find('input').each(function() {
this.name = this.name.replace(/\[(\d+)\]/,function(str,p1){return '[' + (parseInt(p1,10)+1) + ']'});
this.value = "";
this.checked = false;
}).removeClass("active").end().appendTo("#duplicate-section");
在函数中单击()。这个很好用。但是,我在克隆区域中有以下HTML:
<div class="btn-group" data-toggle="buttons"><label class="btn btn-default button-array "><input type="checkbox" name="select-sessions[3][1]" value="">Session 1</label>
<label class="btn btn-default button-array "><input type="checkbox" name="select-sessions[3][2]" value="">Session 2</label>
<label class="btn btn-default button-array "><input type="checkbox" name="select-sessions[3][3]" value="">Session 3</label>
<label class="btn btn-default button-array "><input type="checkbox" name="select-sessions[3][4]" value="">Session 4</label>
<label class="btn btn-default button-array active"><input type="checkbox" name="select-sessions[3][5]" checked="" value="">Session 5</label>
</div>
请注意,在第一个函数中添加了新的find()
函数。然而,它似乎完全从克隆中删除了所有HTML,我最后只使用了几个输入框,仅此而已。我不明白为什么
在此图像中,您可以看到第一个克隆区域,然后在按下按钮后(添加了新的find()
函数,如上所示):
帮我堆叠溢出,你是我唯一的希望。你缺少一个.end()
因此,您对第一个选择(输入)进行操作,这意味着您没有将克隆的div.duplicate-fields附加到#duplicate节,而是将输入集合附加到#duplicate节(这解释了五个复选框)
试着用这个替换你的第二块
$("div.duplicate-fields:last-child").clone().find('input').each(function () {
this.name = this.name.replace(/\[(\d+)\]/, function (str, p1) { return '[' + (parseInt(p1, 10) + 1) + ']' });
this.value = "";
this.checked = false;
}).end().find("label.button-array.active").each(function () {
$(this).removeClass("active");
}).end().appendTo("#duplicate-section");
Bootply-尝试以下方法:
$(“div.duplicate-fields:last child”).clone().find('input').each(function(){
this.name=this.name.replace(/\[(\d+)\]/,函数(str,p1){return'['+(parseInt(p1,10)+1)+']});
此值为“”;
此项检查=错误;
$(this.parent(“label.button array.active”).removeClass(“active”);
}).removeClass(“active”).end().appendTo(“复制节”);
因为已经在循环每个输入元素,所以可以尝试使用$.parent()获取标签,然后编辑其类
差不多
$("div.duplicate-fields:last-child").clone().find('input').each(function() {
this.name = this.name.replace(/\[(\d+)\]/,function(str,p1){return '[' + (parseInt(p1,10)+1) + ']'});
this.value = "";
this.checked = false;
$(this).parent().removeClass("active");
}).end().appendTo("#duplicate-section");
请提供一个小提琴像你有问题。谢谢!这很有效。我没有把它标记为答案,因为它没有解释为什么会发生。但是非常感谢你的帮助。这很有效,也解释了为什么我的第一次尝试没有成功。我怀疑我需要这样的东西,但我没有足够的find()。非常感谢。如果你也能解释一下上面的图片,以及为什么我会得到这些结果,那就太好了。完成(第二段),如果不清楚,请告诉我。干杯
$("div.duplicate-fields:last-child").clone().find('input').each(function() {
this.name = this.name.replace(/\[(\d+)\]/,function(str,p1){return '[' + (parseInt(p1,10)+1) + ']'});
this.value = "";
this.checked = false;
$(this).parent().removeClass("active");
}).end().appendTo("#duplicate-section");