Вот код, который, я думаю, должен вставлять те же строки снова, потому что мы используем append()
здесь. и не удаляя сначала строки.
jQuery(document).ready(function(){
jQuery('#add_rows').click(function(){
var table = jQuery("#myTable");
var rows = table.find('tr:gt(0)').toArray();
for (var i = 0; i < rows.length; i++){table.append(rows[i])}
})
});
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script>
<title>Sort a HTML Table Alphabetically</title>
</head>
<body>
<button id ="add_rows">Add rows </button>
<table id="myTable">
<tr>
<th class="sort_table">Name</th>
<th class="sort_table">Country</th>
</tr>
<tr>
<td>Berglunds snabbkop</td>
<td>Sweden</td>
</tr>
<tr>
<td>North/South</td>
<td>UK</td>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Germany</td>
</tr>
<tr>
<td>Koniglich Essen</td>
<td>Germany</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Italy</td>
</tr>
<tr>
<td>Paris specialites</td>
<td>France</td>
</tr>
<tr>
<td>Island Trading</td>
<td>UK</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Canada</td>
</tr>
</table>
Если я использую for (var я = 0; я < rows.length; i++){table.append('<tr><td>data1</td><td>data2</td></tr>')}
Затем он фактически добавляет строки (как и ожидалось), но в первом случае он не делает то же самое, я думаю, что он должен что-то делать с тем, что мы используем объекты там, но я не уверен
Может ли кто-нибудь объяснить причину?
Спасибо
Добавление этого документа, который уже существует в документе, перемещает его.
Если вы хотите "клонировать" эти строки, используйте table.find("tr:gt(0)").clone();
и добавьте их.
Appending a child that already exists in the document moves it.
очень информативно, спасибо