Есть две проблемы, вызывающие проблему. Во-первых, $('tr')
- это выбор строки, а не создание новой. Выбранный tr
- это тот, который находится в thead
, который вы затем append()
переходите в тело таблицы, поэтому кажется, что элемент перемещается. Вместо этого вы должны использовать $('<tr />')
, чтобы создать новую строку. Во-вторых, вам нужно append()
новую строку в tbody
таблицы.
Также обратите внимание, что поскольку вы используете литерал шаблона, вы можете избежать множественных вызовов append()
. Попробуйте это:
let index = 0;
let profile = {
name: 'Foo Bar',
address: '1 Any Street',
port: 8080,
mountPoint: 'Lorem ipsum'
}
const row = $('<tr />').append(`
<th scope="row">${++index}</th>
<td>${profile.name}</td>
<td><code>${profile.address + ':' + profile.port}<code></td>
<td><code>${profile.mountPoint}</code></td>
<td><p>placeholder</p></td>`);
$('#main-profiles tbody').append(row)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="table" id="main-profiles">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Name</th>
<th scope="col">Address</th>
<th scope="col">Mount point</th>
<th scope="col">Options</th>
</tr>
</thead>
<tbody></tbody>
</table>