这里已经有关于这个主题的变化,但没有完全对应的东西。然而,这个问题必须提出很多。
我需要在一个页面上添加/删除多个表行。我在网上已经做了很多研究,有很多例子可以很好地应用于单个表,但是一旦添加了第二个表,一切都会变得疯狂。对于每个表来说,这应该是一个简单的依赖ID的问题,但是我还没有做到这一点,我真的不想在我的页面上重复大量的jquery代码。
以下是jquery,它主要取自一个在线演示。我知道我正在为我的表重复ID,所以我故意将这段代码留下这个错误。
jQuery(document).delegate('a.add-record', 'click', function(e) {
e.preventDefault();
var content = jQuery('#sample_table tr'),
size = jQuery('#tbl_posts >tbody >tr').length + 1,
element = null,
element = content.clone();
element.attr('id', 'rec-'+size);
element.find('.delete-record').attr('data-id', size);
element.appendTo('#tbl_posts_body');
});
jQuery(document).delegate('a.delete-record', 'click', function(e) {
e.preventDefault();
var id = jQuery(this).attr('data-id');
var targetDiv = jQuery(this).attr('targetDiv');
jQuery('#rec-' + id).remove();
return true;
});<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!----------START TABLE 1 HERE---------->
<form enctype="multipart/form-data">
<table class="table table-bordered third" id="tbl_posts">
<thead>
<tr>
<div class="well clearfix">
<td colspan="4">
<a class="btn btn-primary pull-right add-record" data-added="0"><div class="button" width="100%">CLICK TO ADD A ROW</div></a>
</td>
</div>
</tr>
</thead>
<tbody id="tbl_posts_body">
<TR id="rec-1">
<TD>
<input type="text" name="something[]">
</TD>
<TD>
<input type="text" name="somethingelse[]">
</TD>
<TD>
<input type="text" name="somethingelseagain[]">
</TD>
<TD>
<a class="btn btn-xs delete-record" data-id="1">REMOVE</a>
</TD>
</TR>
</tbody>
</table>
</form>
<!----------TABLE 1 NEW ROWS---------->
<div style="display:none;">
<table id="sample_table">
<tbody id="tbl_posts_body">
<tr id="">
<TD>
<input type="text" name="something[]"></input>
</TD>
<TD>
<input type="text" name="somethingelse[]">
</TD>
<TD>
<input type="text" name="somethingelseagain[]">
</TD>
<TD>
<a class="btn btn-xs delete-record" data-id="1">REMOVE</a>
</td>
</TR>
</tbody>
</table>
</div>
<!----------END TABLE 1 HERE---------->
<BR><HR><BR>
<!----------START TABLE 2 HERE---------->
<form enctype="multipart/form-data">
<table class="table table-bordered third" id="tbl_posts">
<thead>
<tr>
<div class="well clearfix">
<td colspan="4">
<a class="btn btn-primary pull-right add-record" data-added="0"><div class="button" width="100%">CLICK TO ADD A ROW</div></a>
</td>
</div>
</tr>
</thead>
<tbody id="tbl_posts_body">
<TR id="rec-1">
<TD>
<input type="text" name="something[]">
</TD>
<TD>
<input type="text" name="somethingelse[]">
</TD>
<TD>
<input type="text" name="somethingelseagain[]">
</TD>
<TD>
<a class="btn btn-xs delete-record" data-id="1">REMOVE</a>
</TD>
</TR>
</tbody>
</table>
</form>
<!----------TABLE 2 NEW ROWS---------->
<div style="display:none;">
<table id="sample_table">
<tbody id="tbl_posts_body">
<tr id="">
<TD>
<input type="text" name="something[]"></input>
</TD>
<TD>
<input type="text" name="somethingelse[]"></input>
</TD>
<TD>
<input type="text" name="somethingelseagain[]"></input>
</TD>
<TD>
<a class="btn btn-xs delete-record" data-id="1">REMOVE</a>
</td>
</TR>
</tbody>
</table>
</div>
<!----------END TABLE 2 HERE---------->
发布于 2018-12-08 12:43:54
下面的代码将适用于任意数量的表。
根据请求,我在每个使用类.demo-row隐藏的表中创建了演示行。通过单击.add-record,会触发一个事件,该事件在复制到变量并删除.demo-row类之前,搜索它嵌入到.first()行中的表和类.demo-row,然后删除.demo-row类(以便显示)。然后将其.appends到相关的表中。
.delete-record的操作类似,使用.closest(tr)查找它嵌入的行,并通过.remove()删除它。您需要使用$(document).on("click",...来将单击事件应用于动态创建元素。
$(".add-record").click( function() {
row = $(this).closest("table").find("tbody").first().find("tr.demo-row").first().clone().removeClass("demo-row");
$(this).closest("table").find("tbody").first().append( row );
});
$(document).on("click", "a.delete-record" , function() {
$(this).closest("tr").remove();
});tr.demo-row {
display: none;
}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form enctype="multipart/form-data">
<table class="table table-bordered third" id="tbl_posts">
<thead>
<tr>
<div class="well clearfix">
<td colspan="4">
<a class="btn btn-primary pull-right add-record" data-added="0"><div class="button" width="100%">CLICK TO ADD A ROW</div></a>
</td>
</div>
</tr>
</thead>
<tbody id="tbl_posts_body">
<TR class="demo-row">
<TD>
I like pears.
</TD>
<TD>
<input type="text" name="somethingelse[]">
</TD>
<TD>
<input type="text" name="somethingelseagain[]">
</TD>
<TD>
<a class="btn btn-xs delete-record" data-id="1">REMOVE</a>
</TD>
</TR>
<TR id="rec-1">
<TD>
I like pears.
</TD>
<TD>
<input type="text" name="somethingelse[]">
</TD>
<TD>
<input type="text" name="somethingelseagain[]">
</TD>
<TD>
<a class="btn btn-xs delete-record" data-id="1">REMOVE</a>
</TD>
</TR>
</tbody>
</table>
</form>
<form enctype="multipart/form-data">
<table class="table table-bordered third" id="tbl_posts">
<thead>
<tr>
<div class="well clearfix">
<td colspan="4">
<a class="btn btn-primary pull-right add-record" data-added="0"><div class="button" width="100%">CLICK TO ADD A ROW</div></a>
</td>
</div>
</tr>
</thead>
<tbody id="tbl_posts_body">
<TR class="demo-row">
<TD>
I like apples.
</TD>
<TD>
<input type="text" name="somethingelse[]">
</TD>
<TD>
<input type="text" name="somethingelseagain[]">
</TD>
<TD>
<a class="btn btn-xs delete-record" data-id="1">REMOVE</a>
</TD>
</TR>
<TR id="rec-1">
<TD>
I like apples.
</TD>
<TD>
<input type="text" name="somethingelse[]">
</TD>
<TD>
<input type="text" name="somethingelseagain[]">
</TD>
<TD>
<a class="btn btn-xs delete-record" data-id="1">REMOVE</a>
</TD>
</TR>
</tbody>
</table>
</form>
<!----------NEW ROWS---------->
<div style="display:none;">
<table id="sample_table">
<tbody id="tbl_posts_body">
<tr id="">
<TD>
<input type="text" name="something[]"></input>
</TD>
<TD>
<input type="text" name="somethingelse[]"></input>
</TD>
<TD>
<input type="text" name="somethingelseagain[]"></input>
</TD>
<TD>
<a class="btn btn-xs delete-record" data-id="1">REMOVE</a>
</td>
</TR>
</tbody>
</table>
</div>
https://stackoverflow.com/questions/53682527
复制相似问题