我使用了以下答案中的代码:
jquery clone form fields and increment id创建了我的表单的可克隆区域,除了“添加另一个”和“删除行”按钮外,所有区域都运行良好.
只有原始可克隆区域的“添加/删除”按钮才有效,因此下一个克隆区域的添加/删除按钮不会执行任何操作,这意味着您使用了第一行,这是令人困惑的.
我真的看不出发生了什么事.任何帮助将不胜感激!
HTML:
<div id="previous-jobs"> <div class="panel-group" id="accordion"> <div id="clonedInput1" class="clonedInput panel panel-default"> <div class="panel-heading clearfix"> <h4 class="panel-title pull-left"> <a class="heading-reference accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#collapse1"> Entry #1 </a> </h4> <div id="action-buttons" class="pull-right"> <button type="button" class="btn btn-success clone">Add another</button> <button type="button" class="btn btn-danger remove">Delete Row</button> </div> </div> <div id="collapse1" class="input-panel panel-collapse collapse"> <div class="panel-body"> <div class="row"> <div class="form-group col-sm-6"> <label class="p-date-from-title input-title" for="p-date-from">Date From</label> <input type="text" class="ci-df form-control" id="p-date-from1" name="p-date-from" value="[[+!fi.p-date-from]]" placeholder="Date from"> </div> <div class="form-group col-sm-6"> <label class="p-date-to-title input-title" for="p-date-to">Date To</label> <input type="text" class="ci-dt form-control" id="p-date-to1" name="p-date-to" value="[[+!fi.p-date-to]]" placeholder="Date to"> </div> </div> <div class="form-group"> <label class="p-employer-title input-title" for="p-employer">Employer</label> <input type="text" class="ci-em form-control" id="p-employer1" name="p-employer" value="[[+!fi.p-employer]]" placeholder="Employer"> </div> <div class="form-group"> <label class="p-position-title input-title" for="p-position">Position</label> <input type="text" class="ci-po form-control" id="p-position1" name="p-position" value="[[+!fi.p-position]]" placeholder="Position"> </div> <div class="form-group"> <label class="p-salary-title input-title" for="p-salary">Salary</label> <input type="text" class="ci-sa form-control" id="p-salary1" name="p-salary" value="[[+!fi.p-salary]]" placeholder="Salary"> </div> <div class="form-group"> <label class="p-full-part-time-title input-title" for="p-full-part-time">Full/Part Time</label> <select class="ci-fpt form-control" id="p-full-part-time1" name="p-full-part-time" value="[[+!fi.p-full-part-time]]"> <option value="Full Time">Full Time</option> <option value="Part Time">Part Time</option> </select> </div> <div class="form-group"> <label class="p-leaving-reason-title input-title" for="p-leaving-reason">Reason for Leaving</label> <input type="text" class="ci-rfl form-control" id="p-leaving-reason1" name="p-leaving-reason" value="[[+!fi.p-leaving-reason]]" placeholder="Reason for leaving"> </div> </div> </div> </div> </div>
jQuery:
var regex = /^(.*)(\d)+$/i; var cloneIndex = $(".clonedInput").length; $("button.clone").click(function(){ cloneIndex++; $(this).parents(".clonedInput").clone() .appendTo("#accordion") .attr("id","clonedInput" + cloneIndex) .find("*").each(function() { var id = this.id || ""; var match = id.match(regex) || []; if (match.length == 3) { this.id = match[1] + (cloneIndex); this.name = match[1] + (cloneIndex); } $(this).find('.heading-reference').attr("href","#collapse" + cloneIndex).html('Entry #' + cloneIndex); }); }); $("button.remove").click(function(){ $(this).parents(".clonedInput").remove(); });
解决方法
对于动态添加的元素,请使用.on()
jQuery documentation .on()(对于jQuery 1.7及更高版本)
在您发布的示例中,他们使用了.live(),这是针对jQuery 1.7及更低版本的.
在任何$(document).ready()函数之外添加它:
$(document).on('click','button.clone',function(){ ... });
通过执行此操作,事件处理程序将添加到文档中,因此只要事件冒泡到源自button.clone元素的事件,它就会触发该函数.因此,当页面加载后添加按钮时,即使在最初加载页面时它们不可用,它们仍会触发click事件.
如果您只是使用$(‘button.clone’).单击(…)只有首次加载时页面上的按钮才会触发click事件.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。