JQuery:如何使用其 id 将现有 <td> 元素添加到新的 <tr> 元素?
JQuery: How to add an existing <td> element using its id to a new <tr> element?
与此相关的 html 是:
<table class="table" id="constraintTable">
<tr>
{% for header in headings %}
<th>{{ header }}</th>
{% endfor %}
<th>Action</th>
</tr>
{% for row in data %}
<tr>
{% for cell in row%}
<td>{{ cell }}</td>
{% endfor %}
<td id="editDelete">
<a href="#" id="editRow">Edit</a>
<a href="#" id="deleteRow">Delete</a>
</td>
</tr>
{% endfor %}
</table>
<button type="button" class="btn btn-primary" id="addConstraint" onclick="constraintAddToTable();>Add New Constraint</button>
现在我正在尝试使用以下 Jquery 向此 table 添加一行:
(假设上面html中的'row'集合只有2个条目)
function constraintAddToTable() {
if ($("#constraintTable tbody").length == 0) {
$("#constraintTable").append("<tbody></tbody>");
}
$("#constraintTable tbody").append("<tr>" +
"<td>" + "dataval1" + "</td>" +
"<td>" + "dataval2" + "</td>" +
$("#editDelete") +
"</tr>");
}
但这不起作用。只有 dataval1 和 dataval2 进入,最后一列只是空白。
我什至尝试添加没有 edit/delete 列的行,然后像这样添加 cloumn:
$("#constraintTable tr: last").append($("#editDelete"))
但这也行不通。
知道为什么这不起作用以及需要做什么吗?
查看您的 HTML 代码,您没有 tbody
标签。
如下所示编辑您的 HTML 代码并尝试。
<table class="table" id="constraintTable">
<tr>
{% for header in headings %}
<th>{{ header }}</th>
{% endfor %}
<th>Action</th>
</tr>
<tbody> //tbody starts
{% for row in data %}
<tr>
{% for cell in row%}
<td>{{ cell }}</td>
{% endfor %}
<td id="editDelete">
<a href="#" id="editRow">Edit</a>
<a href="#" id="deleteRow">Delete</a>
</td>
</tr>
{% endfor %}
</tbody> //tbody ends
</table>
您需要先创建一个副本(克隆),然后追加。试试这个:
`$("#constraintTable tr: last").append($("#editDelete").clone(true))`
您不能对多个元素使用相同的 id
而是使用 class
。然后,无论何时调用您的函数,您都可以 clone
您的 td.editDelete
并在您的内部添加相同的内容使用 $(htmls).html()
.
生成 html
演示代码 :
function constraintAddToTable() {
if ($("#constraintTable tbody").length == 0) {
$("#constraintTable").append("<tbody></tbody>");
}
//get td >first clone it
var htmls = $("td.editDelete:first").clone()
//add inside your genearted htmls...
$("#constraintTable tbody").append("<tr>" +
"<td>" + "dataval1" + "</td>" +
"<td>" + "dataval2" + "</td><td>" +
$(htmls).html() +
"</td></tr>");
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table" id="constraintTable">
<tr>
<th>Soemthing</th>
<th>Soemthing1</th>
<th>Action</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
<!--use class-->
<td class="editDelete">
<a href="#" class="editRow">Edit</a>
<a href="#" class="deleteRow">Delete</a>
</td>
</tr>
<tr>
<td>11</td>
<td>22</td>
<td class="editDelete">
<a href="#" class="editRow">Edit</a>
<a href="#" class="deleteRow">Delete</a>
</td>
</tr>
</table>
<button type="button" class="btn btn-primary" id="addConstraint" onclick="constraintAddToTable();">Add New Constraint</button>
与此相关的 html 是:
<table class="table" id="constraintTable">
<tr>
{% for header in headings %}
<th>{{ header }}</th>
{% endfor %}
<th>Action</th>
</tr>
{% for row in data %}
<tr>
{% for cell in row%}
<td>{{ cell }}</td>
{% endfor %}
<td id="editDelete">
<a href="#" id="editRow">Edit</a>
<a href="#" id="deleteRow">Delete</a>
</td>
</tr>
{% endfor %}
</table>
<button type="button" class="btn btn-primary" id="addConstraint" onclick="constraintAddToTable();>Add New Constraint</button>
现在我正在尝试使用以下 Jquery 向此 table 添加一行: (假设上面html中的'row'集合只有2个条目)
function constraintAddToTable() {
if ($("#constraintTable tbody").length == 0) {
$("#constraintTable").append("<tbody></tbody>");
}
$("#constraintTable tbody").append("<tr>" +
"<td>" + "dataval1" + "</td>" +
"<td>" + "dataval2" + "</td>" +
$("#editDelete") +
"</tr>");
}
但这不起作用。只有 dataval1 和 dataval2 进入,最后一列只是空白。 我什至尝试添加没有 edit/delete 列的行,然后像这样添加 cloumn:
$("#constraintTable tr: last").append($("#editDelete"))
但这也行不通。 知道为什么这不起作用以及需要做什么吗?
查看您的 HTML 代码,您没有 tbody
标签。
如下所示编辑您的 HTML 代码并尝试。
<table class="table" id="constraintTable">
<tr>
{% for header in headings %}
<th>{{ header }}</th>
{% endfor %}
<th>Action</th>
</tr>
<tbody> //tbody starts
{% for row in data %}
<tr>
{% for cell in row%}
<td>{{ cell }}</td>
{% endfor %}
<td id="editDelete">
<a href="#" id="editRow">Edit</a>
<a href="#" id="deleteRow">Delete</a>
</td>
</tr>
{% endfor %}
</tbody> //tbody ends
</table>
您需要先创建一个副本(克隆),然后追加。试试这个:
`$("#constraintTable tr: last").append($("#editDelete").clone(true))`
您不能对多个元素使用相同的 id
而是使用 class
。然后,无论何时调用您的函数,您都可以 clone
您的 td.editDelete
并在您的内部添加相同的内容使用 $(htmls).html()
.
演示代码 :
function constraintAddToTable() {
if ($("#constraintTable tbody").length == 0) {
$("#constraintTable").append("<tbody></tbody>");
}
//get td >first clone it
var htmls = $("td.editDelete:first").clone()
//add inside your genearted htmls...
$("#constraintTable tbody").append("<tr>" +
"<td>" + "dataval1" + "</td>" +
"<td>" + "dataval2" + "</td><td>" +
$(htmls).html() +
"</td></tr>");
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table" id="constraintTable">
<tr>
<th>Soemthing</th>
<th>Soemthing1</th>
<th>Action</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
<!--use class-->
<td class="editDelete">
<a href="#" class="editRow">Edit</a>
<a href="#" class="deleteRow">Delete</a>
</td>
</tr>
<tr>
<td>11</td>
<td>22</td>
<td class="editDelete">
<a href="#" class="editRow">Edit</a>
<a href="#" class="deleteRow">Delete</a>
</td>
</tr>
</table>
<button type="button" class="btn btn-primary" id="addConstraint" onclick="constraintAddToTable();">Add New Constraint</button>