У меня небольшая проблема с jQuery slideUp и slideDown, когда я использую его в таблице. У меня есть HTML, как это (также в основном сгенерированный jQuery, но это не важно):
<tr class="expandable-container">
<td colspan="10">
<div id="3_expandable" style="display: none;">
<table class="innerTable">
...
</table>
</div>
</td>
</tr>
Стиль для внешнего стола:
.main-table {
border-radius: 0.5em 0.5em 0 0;
width: 129em;
background-color: #f1f1f1;
margin-top: 1.5em;
z-index: 10;
position: relative;
}
.main-table td, .main-table th {
padding: 1.2em 0.7em;
border-collapse: collapse;
border-left: 0.1em solid #dedede;
}
.main-table td:first-child, .main-table th:first-child {
border-left: 0 solid;
}
.expandable-container td {
padding: 0 !important;
background-color: red; /* inserted to identify the problem */
}
Поскольку slideUp и slideDown не работают с элементами таблицы, я обернул содержимое (которое является другой таблицей, но не важно) в элемент div, который, конечно, скрыт. Когда я применил методы slideUp и slideDown и протестировал его в Firefox 6, по какой-то причине анимация показалась небрежной. Поэтому я установил 10-секундное время слайда, чтобы проверить его, и определил, что когда анимация начинается, элемент td появляется сразу с высотой == 20px, и div скользит внутри него. Затем все идет так, как ожидалось - когда div превышает начальную неожиданную высоту td, он закрывает ее и расширяется до предполагаемого размера.
Это происходит в Firefox 6. Он работает без проблем в Chrome 13. Я не тестировал его ни в одной версии IE, потому что он не предназначен для браузера, поэтому мне не пришлось проходить через все проблемы с установить его на машине Linux. Не проверено в Opera также потому, что теперь на нем происходит сбой другого скрипта, который нужно исправить.
Я прилагаю скриншот самого первого момента анимации слайддауна - когда тд появляется из ниоткуда (красный фон).
Мой вопрос - есть ли способ или обходной путь, чтобы это исправить?
Как предложил Ариэль, я добавил его как jsFiddle. Как ни странно, там хорошо работает даже на FF6:
jsFiddle rendition
EDIT: я исправил проблему, которая вызвала сбой в Opera 11, поэтому я смог протестировать его. Так что - это происходит и в Opera 11.