jquery — клонировать n-ю строку таблицы?

#jquery #clone

#jquery #клонировать

Вопрос:

Я пытаюсь использовать jquery для клонирования строки таблицы каждый раз, когда кто-то нажимает кнопку добавить строку. Кто-нибудь может сказать мне, что не так с моим кодом? На мой взгляд, я использую HTML язык шаблонов smarty. Вот как выглядит мой файл шаблона:

     <table>
            <tr>
                    <td>Description</td>
                    <td>Unit</td>
                    <td>Qty</td>
                    <td>Total</td>
                    <td></td>
            </tr>
    <tbody id="entries">
    {foreach from=$arrItem item=i name=inv}
            <tr>
                    <td>
                            <input type="hidden" name="invoice_item_id[]" value="{$i.invoice_item_id}"/>
                            <input type="hidden" name="assignment_id[]" value="{$i.assignment_id}" />
                            <input type="text" name="description[]" value="{$i.description}"/>
                    </td>
                    <td><input type="text" class="unit_cost" name="unit_cost[]" value="{$i.unit_cost}"/></td>
                    <td><input type="text" class="qty" name="qty[]" value="{$i.qty}"/></td>
                    <td><input type="text" class="cost" name="cost[]" value="{$i.cost}"/></td>
                    <td><a href="javascript:void(0);" class="delete-invoice-item">delete</a></td>
            </tr>
    {/foreach}
    </tbody>
    <tfoot>
            <tr><td colspan="5"><input type="button" id="add-row" value="add row" /></td></tr>
    </tfoot>
    </table>
  

Вот мой вызов Jquery Javascript, который, как я знаю, запускается, когда я ввожу оператор alert(). Итак, проблема в том, что я не знаю, как работает jquery.

 $('#add-row').live('click', function() {$('#entries tr:nth-child(0)').clone().appendTo('#entries');});
  

Итак, что я делаю не так?

Комментарии:

1. Какую строку вы хотите клонировать?

Ответ №1:

Во-первых, не существует такого понятия, как nth-child(0) , n-й дочерний элемент начинается с 1

Комментарии:

1. есть ли также способ клонировать строку без клонирования атрибута value каждого входного элемента?

2. попробуйте просто скопировать HTML: $('#entries').append( $('#entries tr:nth-child(1)').html(); )

Ответ №2:

Попробуйте использовать:

 $("tr:nth-child(0)", "#entries")
  

Посмотрим, поможет ли это….

Ответ №3:

ах, я понял это. n-й дочерний элемент (0) должен быть n-м дочерним элементом (1), если я хочу выбрать первую строку. Подсчет начинается с 1