2013-02-25 3 views
2

У меня проблемы с селектором tr:last.JQuery первый стол, выбор последней строки

У меня есть основная таблица:

<table id="myTable"> 
<tr> 
    <td>1</td> 
    <td></td> 
</tr> 
</table> 

Когда пользователь нажимает на ссылку, он добавляет строку ДОПОЛНИТЕЛЬНО к моему столу с помощью:

$("a#more").live("click", function(){ 

    $table = $('#myTable'); 
    var a = $table.find('tr:last').clone(true); 
    $table.find('tr:last').after(a); 

}); 

, который работает как шарм. Тем не менее, проблема начинается, когда я решил добавить дополнительную таблицу в последнем td моего стола:

<table id="myTable"> 
<tr> 
    <td> 1 </td> 
    <td> 
    <table id="myTable2"> 
    <tr><td> Additional Information </td></tr> 
    </table> 
    </td> 
</tr> 
</table> 

, когда я использую clone на этот раз, он выбирает последнюю строку моей второй таблицы и копирует новую строку мой второй стол. Моя цель - дублировать ТОЛЬКО всю последнюю строку моей первой таблицы и создать новый tr со всем содержимым в нем (включая копию второй таблицы).

Я не уверен, как это сделать.

+1

'live' является устаревшим и удаляется из 1.9. Используйте 'on' –

+0

Спасибо за головы. Не имел представления. – Dimitri

ответ

5

Вместо

var a = $table.find('tr:last').clone(true); 

Использование .children() ограничить его к исходной таблице:

var a = $table.children('tbody').children('tr:last').clone(true); 
+0

Мне интересно: гарантировано ли, что 'tbody' будет вставлен браузером? –

+0

Работает отлично, спасибо! – Dimitri

+0

@JanDvorak Я всегда добавляю его в HTML, чтобы быть уверенным. – Blazemonger

Смежные вопросы