jquery удалить содержимое последнего тд

0

У меня есть таблица $ ("# 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");          
    });
Теги:

4 ответа

0
Лучший ответ

вы можете сделать так:

..
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);          
});

Обновленный скрипт

  • 0
    Спасибо - это сработало для меня.
0

Попробуйте этот код:

$("#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);
});

Демо-версия скрипта

0

Я добавил кнопку 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
});

скрипка здесь

0

Вы должны попытаться удалить из объекта clone:

var clonerow = $(this)
    .clone().find("td:last").remove().end()
    .wrap("<tr></tr>").parent().html();

Здесь работает демо

  • 0
    Этот ответ не работает.
  • 0
    проверьте демо и обновите

Ещё вопросы

Сообщество Overcoder
Наверх
Меню