Причина этого заключается в том, что обратный вызов, данный slideUp
, не вызывается после того, как все анимации завершены, но после каждая анимация завершена. Поскольку div
s в скрытом столбце не видны, анимация скольжения не требуется, то есть выполняется немедленно, и, таким образом, обратный вызов вызывается немедленно.
Однако обратный вызов удаляет всю строку .
Есть несколько способов справиться с этим. Идея о том, что вы сами (не имеете дело с div
s, которые в любом случае не видны) - это один из способов, который должен работать.
Другой способ - установить время для удаления строки вместо того, чтобы делать это в обратном вызове.
Третий способ - проверить обратный вызов, если остались какие-либо div
, и удалить только строку, если ее нет, т.е. что-то вроде
.
$(id).find("td div").slideUp(function() {
$(this).remove(); // remove the div itself
if ($(id).find("td div").length == 0) // if none are left
$(id).remove(); // then remove the row
});