Я практиковал что-то простое в jquery, в данном случае добавляя новые строки в таблицу с помощью кнопки, для чего у меня есть два фрагмента кода:
Первый с использованием селектора tbody:last-child
и функции append()
jquery .
$("#add").on("click", function(){
$('#test > tbody:last-child').append('<tr><td>'+$("#nombre").val()+'</td><td>'+$("#apellido").val()+'</td></tr>');
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Test Tabla</title>
</head>
<body>
Nombre: <input type="text" id="nombre">
Apellido: <input type="text" id="apellido">
<button type="button" id="add">Agregar</button>
<table id="test">
<thead>
<tr>
<th>Nombre</th>
<th>Apellido</th>
</tr>
</thead>
<tbody>
<tr>
<td>
Luis
</td>
<td>
Paredes
</td>
</tr>
</tbody>
</table>
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
</body>
</html>
А второй с помощью селектора tr:last
и функцииafter()
$("#add").on("click", function(){
$('#test tr:last').after('<tr><td>'+$("#nombre").val()+'</td><td>'+$("#apellido").val()+'</td></tr>');
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
Nombre: <input type="text" id="nombre">
Apellido: <input type="text" id="apellido">
<button type="button" id="add">Agregar</button>
<table id="test">
<thead>
<tr>
<th>Nombre</th>
<th>Apellido</th>
</tr>
</thead>
<tbody>
<tr>
<td>
Luis
</td>
<td>
Paredes
</td>
</tr>
</tbody>
</table>
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
</body>
</html>
Мой вопрос:
Есть ли другой способ сделать это, и какой из двух способов лучше реализован?
Да, есть много других способов сделать это, правда и при всем уважении, я думаю столько, сколько мы можем придумать и создать. На английском SO есть вопрос , который предлагает более 20 различных вариантов для этого.
Какой из двух лучше реализован? Я думаю, что нет большой разницы, это просто два разных способа решения проблемы.
С точки зрения исходного кода используемых методов разница между одним и другим должна быть минимальной с точки зрения производительности:
Наконец, что касается реализации, которую вы делаете, селекторы можно было бы немного улучшить, в первом случае не нужно указывать,
:last-child
а во втором мы могли бы избежать использования селектора потомка и добавитьtbody
, если он есть<tfoot>
в конце Таблица.Добавление к отличному ответу @Shaz:
Если вы имеете в виду реализацию в общих чертах, то нет. Избегайте использования такого кода, который нельзя использовать повторно, вместо этого вы можете использовать для него функции, которые служат шаблонами. Например, ваш код может быть модульным следующим образом:
Что касается производительности между
jQuery#append
иjQuery#after
, то заметных различий нет.