JQuery: использование appendTo от второго до последнего ряда таблицы - PullRequest
23 голосов
/ 29 октября 2009

У меня есть часть DOM, которую я хотел бы вставить на мою страницу. В настоящее время я просто слепо использую:

$(myblob).appendTo(someotherblob);

Как мне сделать то же самое, но добавить myblob ко второму или последнему ряду, который находится внутри someotherblob. someotherblob в данном случае - это таблица, и я хочу вставить строку выше второй до последней.

Ответы [ 9 ]

72 голосов
/ 29 октября 2009
$('#mytable tr:last').before("<tr><td>new row</td></tr>")
2 голосов
/ 11 апреля 2013

Вы также можете выбрать строку с помощью селектора индекса.

$('#mytable tr').eq(-1).before("<tr><td>new row</td></tr>")

Здесь eq используется для выбора последней строки. eq - нулевой индекс, а отрицательный индекс начинается с последнего. поэтому я использовал -1 в индексе.

1 голос
/ 23 мая 2015
$('#mytable tr:last').prev().after("<tr><td>new row</td></tr>")
1 голос
/ 25 июля 2013
  • Я ценю ответ, полученный от orin , который был этот .

  • Я попробовал это и обнаружил, что требуемый столбец буквально сместился над таблицей ввода. Это потому, что я не использую тег thead для заголовка столбца. Я снова начал искать ответ и нашел собственное решение.

  • Итак, вот оно: в моем сценарии требовалось показать итоговую сумму всех записей, поступающих в каждый столбец с числовым типом. Я не смог сделать расчет, если все строки не были заполнены на лету.

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)');

дайте мне знать, если я отвечу на ваш вопрос .

1 голос
/ 29 октября 2009

Обратите внимание, что с before () элементы уже должны быть вставлены в документ (вы не можете вставить элемент раньше другого, если его нет на странице).

Так что сначала вы должны вставить someotherblob:

$('selector to insert someotherblob at')
    .append(someotherblob)
       .find('table tr:last')
          .prev()
          .before(myblob);
0 голосов
/ 27 января 2010

Так просто, как это:

$("#TableName tr:last").prev().before("<tr><td>Hello World</td></tr>");
0 голосов
/ 29 октября 2009

Немного в темноте, но я предполагаю, что у вас есть нижний колонтитул, или, может быть, даже ввод данных, внизу таблицы, и вы хотите добавить строки к данным до того, как сноска. В этом случае вы должны реструктурировать свою таблицу так:

<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);
0 голосов
/ 29 октября 2009

Я думаю, что вы хотите добавить строку для каждой строки таблицы между второй и последней строкой.

в этом случае попробуйте:

var rows=someotherblob.find("TR");
var nrows=rows.length;
    rows.slice(1,(nrows-2)).each(function(){
     $(this).append(myblob);
    })
0 голосов
/ 29 октября 2009

Я недавно выложил в сеть некоторый код, который поможет вам справиться с модификациями таблиц:

http://notetodogself.blogspot.com/2009/08/javascript-insert-table-rows-table-body.html

Кроме того, ваш вопрос не слишком ясен, но, надеюсь, ссылка выше охватит все базы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...