Ответ 1
$('#mytable tr:last').before("<tr><td>new row</td></tr>")
У меня есть часть DOM, которую я хотел бы вставить на мою страницу. В настоящее время я просто слепо использую:
$(myblob).appendTo(someotherblob);
Как мне сделать то же самое, но добавьте myblob ко второй-последней строке, которая находится внутри someotherblob. someotherblob в этом случае является таблицей, и я хочу добавить строку выше второй, чтобы она была последней.
$('#mytable tr:last').before("<tr><td>new row</td></tr>")
Вы также можете выбрать строку с помощью селектора индексов.
$('#mytable tr').eq(-1).before("<tr><td>new row</td></tr>")
Здесь eq используется для выбора последней строки. eq
- нулевой индекс, а отрицательный индекс начинается с последнего. поэтому я использовал -1
в индексе.
Обратите внимание, что с before() элементы уже должны быть вставлены в документ (вы не можете вставить элемент перед другим, если он не находится на странице).
Итак, сначала нужно вставить someotherblob:
$('selector to insert someotherblob at')
.append(someotherblob)
.find('table tr:last')
.prev()
.before(myblob);
Я попробовал это и обнаружил, что требуемый столбец буквально смещается над таблицей enitre. Это потому, что я не использую тег adad для столбца заголовка. Еще раз я начал копать ответ и придумал свое решение.
Итак, вот так: в моем сценарии потребовалось показать общий итог всех записей, входящих в каждый столбец типа номера. Мне не удалось выполнить расчет, если все строки не заполнены на лету.
HTML:
<tr class="gTotal">
<th colspan="4" class="head">Grand Total</th>
<th><?php echo $grandTtlResumeSntCnt; ?></th>
<th><?php echo $grandTtlEvalCnt; ?></th>
<th><?php echo $grandTtlUniqEvalCnt; ?></th>
<th><?php echo $grandTtlResCnt; ?></th>
<th><?php echo $grandTtlUniqResCnt; ?></th>
</tr>
</table>
Jquery:
$('.gTotal').insertBefore('table>tbody>tr:nth-child(2)');
сообщите мне, если я отвечу на ваш вопрос.
$('#mytable tr:last').prev().after("<tr><td>new row</td></tr>")
Недавно я поместил некоторый код онлайн, который поможет вам справиться с изменениями таблиц:
http://notetodogself.blogspot.com/2009/08/javascript-insert-table-rows-table-body.html
Кроме того, вы не слишком поняли, но, надеюсь, ссылка выше будет охватывать все базы
Я думаю, вы хотите добавить строку для каждой строки таблицы между второй и последней строкой.
в этом случае попробуйте:
var rows=someotherblob.find("TR");
var nrows=rows.length;
rows.slice(1,(nrows-2)).each(function(){
$(this).append(myblob);
})
Немного выстрела в темноте, но я предполагаю, что у вас есть нижний колонтитул или, может быть, даже ввод данных внизу таблицы, и вы хотите добавить строки к данным, прежде чем сноска. В этом случае вы должны перестроить свою таблицу следующим образом:
<table id="myTable">
<thead>
<tr><!-- header row(s) --></tr>
</thead>
<tfoot>
<tr><!-- footer row(s) --></tr>
</tfoot>
<tbody>
<tr><!-- exciting and possibly dynamically inserted data goes here --></tr>
</tbody>
</table>
Да, tbody
появляется после tfoot
. Уорд, да?
Тогда вы можете просто использовать это:
$("#myTable tbody").append(newrow);
Проще всего это:
$("#TableName tr:last").prev().before("<tr><td>Hello World</td></tr>");