У меня есть таблица $ ("# Customers").
<table id="Customers">
<tbody>
<tr>
<td>
<input id="model_0_name" type="text" name="model[0].name"/>
</td>
<td>
<button>Add</button>
</td>
</tr>
</tbody>
</table>
Каждая строка имеет кнопку в последнем td-элементе. Я хочу клонировать строку и добавлять ее под нажатой кнопкой. Я хочу удалить элемент кнопки из клонированной строки. Часть клонирования работает, но кнопка не удаляется. Кроме того, я хотел бы переименовать идентификатор и имя новой строки ввода в новый индекс: например: model [1].name.
$("#Customers > tbody > tr").click(function (event) {
event.preventDefault();
// get row index
var rowndx = $("tr").index(this);
var cnt = $("#Customers > tbody > tr").length;
var clonerow = $(this)
.clone()
.wrap("<tr></tr>").parent().html();
$("#Customers > tbody > tr").eq(rowndx - 1).after(clonerow).remove("tr > td:last");
});
вы можете сделать так:
..
var clonerow = $(this)
.clone().find("button").remove().end()
.wrap("<tr></tr>").parent().html();
Демо :: jsFiddle
Рабочий код:
$("#Customers > tbody > tr").click(function (event) {
event.preventDefault();
// get row index
var rowndx = $("tr").index(this);
var cnt = $("#Customers > tbody > tr").length;
var clonerow = $(this)
.clone().find("input").attr("id", "model_"+cnt+"_name").end().find("button").remove().end()
.wrap("<tr></tr>").parent().html();
$("#Customers > tbody > tr").eq(rowndx - 1).after(clonerow);
});
Обновленный скрипт
Попробуйте этот код:
$("#Customers > tbody > tr > td > button").on('click', function() {
var $tr = $(this).closest('tr');
var $clone = $tr.clone();
$clone.find('td:last').remove();
$tr.after($clone);
});
Я добавил кнопку click для добавления кнопки.. так как с селектором как <tr>
, фокусировка на входе приведет к добавлению нового <tr>
.
попробуй это
$("#Customers > tbody > tr > td > button").click(function (event) {
event.preventDefault();
// get row index
var $tr = $(this).parents('tr'); //get parent 'tr'
var countTR = $("#Customers tr").length //get total length of tr
var cloned = $tr.clone(); //clone it
cloned.find('td:last').remove(); //remove the last td from cloned element
cloned.find('input').val('').attr('name', 'model' + [countTR + 1] + '.name') //find inout chnage name and empty the calue
$("#Customers tr:last").after(cloned); //append it at the end
});
Вы должны попытаться удалить из объекта clone:
var clonerow = $(this)
.clone().find("td:last").remove().end()
.wrap("<tr></tr>").parent().html();