Я пытаюсь оживить строку таблицы, скользящую вверх, затем добавить новую строку таблицы и оживить новую строку таблицы, сползающую вниз. Я прочитал на how to animate a table row, теперь я пытаюсь поставить в очередь эти анимации.jQuery: как поставить очередь на выполнение функции после массива анимаций?
<table>
<tr>
<td><div><a class="trigger" "href="#">Hide this row and add a row after this one</a></div></td>
<td><div>content</div></td>
<td><div>content</div></td>
</tr>
<!-- new table row will be added here -->
<tr class="another-row">
<td><div>content</div></td>
<td><div>content</div></td>
<td><div>content</div></td>
</tr>
<tr id="new-row" style="display:none">
<td><div>this row will appear after the row that was clicked</div></td>
<td><div>content</div></td>
<td><div>content</div></td>
</tr>
</table>
Вот Javascript У меня есть:
$('.trigger').click(function(){
var $clickedTableRow = $(this).closest('tr');
var $newTableRow = $('#new-row');
$clickedTableRow.find('td > div').slideUp('slow', function(){
alert('animation complete, ready to hide table row');
$clickedTableRow.hide();
//however, this executes after each div has finished sliding up, instead of after the last one has finished
});
});
Когда я вызываю функцию slideUp()
, появляется, как будто каждый ДИВ скользит вверх одновременно, но полная функция вызывается после каждого DIV вместо сразу же после все эти дивизии закончились. Как я могу поставить в очередь функцию $clickedTableRow.hide();
, которая произойдет только после того, как все фиды закончены? Затем, как только $clickedTableRow
было скрыто, я хочу стоять в очереди анимацию, которая скользит вниз новой строки таблицы:
$newTableRow
.insertAfter($clickedTableRow)
.show()
.find('td > div')
.slideDown(panelSpeed);
Как я могу стоять в очереди эти несколько действий?
Andrew - Я не видел от вас никакой обратной связи, поэтому мне интересно, работает ли решение ниже. – user113716