Изменить: После ответа Джонатана его метод выглядит немного чище.
Здесь у меня есть строка таблицы с классом, view-converters
который при нажатии будет показывать / скрывать все div с классом TCConverters
.
Мои строки выглядят так:
<tr><td><div class="TCConverters"><input type="button" value="b1"></div></td></tr>
<tr><td><div class="TCConverters"><input type="button" value="b2"></div></td></tr>
<tr><td><div class="TCConverters"><input type="button" value="b3"></div></td></tr>
<tr><td><div class="TCConverters"><input type="button" value="b4"></div></td></tr>
Вот код, который запускается при нажатии view-converters
.
Я не делал ничего особенного с заполнением ячеек таблицы.
Обратите внимание, что мы скрываем строку таблицы, когда мы закончили анимацию слайда.
$(".view-converters").click(function() {
if(!$(".TCConverters:first").is(":visible")) {
$(".TCConverters").parent().parent().show();
}
$(".TCConverters").slideToggle(200,function() {
if(!$(this).is(":visible")) {
$(this).parent().parent().hide();
}
});
});
Это выглядит так:
Оригинал:
Здесь у меня есть таблица с классом, view-converters
который при нажатии будет показывать / скрывать все строки с классом TCConverters
:
Вы можете отрегулировать скорость, изменив hacky
начальное значение и прирост в каждом .each
.
Это не растягивает строки так же хорошо, как слайд-переключатель, но эффект работал для моих целей.
Если вы действительно хотите сжать высоту строки, вы можете просто анимировать ее самостоятельно, заменив param.hide()
ее тем, setTimeout
что сжимает высоту, пока не достигнет 0.
$(".view-converters").click(function() {
var hacky = 50;
if($('.TCConverters:first').is(':visible')) {
$('.TCConverters').each(function() {
var param = $(this);
setTimeout(function() { param.hide(); },hacky);
hacky += 5;
});
}
else {
$($('.TCConverters').get().reverse()).each(function() {
var param = $(this);
setTimeout(function() { param.show(); },hacky);
hacky += 5;
});
}
});
Это выглядит так: