jQuery UI.Layout: как отложить открытие панели
Я использую UI.Layout, пытаясь создать поведение, подобное макету ExtJs: при закрытии / открытии горизонтальных панелей изменяемый размер должен быть скрыт и вновь отображаться с эффектом слайда.
Это было легко при закрытии панели, так как эффект появляется после onclose
событие, но у меня возникли серьезные трудности при применении того же поведения на открытой панели.
Так как событие для onopen
срабатывает независимо от эффекта, применяемого к ресайзеру, я не нахожу способа отложить открытие панели до завершения слайдера.
Вот соответствующий код:
outerLayout = $('#outer-layout').layout({
west : {
// ...
onclose_start : function() {
hideResizer('west');
},
onclose_end : function() {
styleResizer('west');
showResizer('west');
animateResizerOnClose('west');
},
onopen_start : animateWestResizerOnOpen
}
// ...
});
function animateWestResizerOnOpen() {
$(this).parent().delay(1400).queue(function() {
$('#outer-layout').layout().open('west');
}).hide('slide', 300);
}
Что здесь не так?
1 ответ
В некотором смысле это обходной путь, но он работает хорошо:
Так как кажется, что нет никакого способа вмешаться в fx-очередь pane-resizer, и setTimeout()
не предлагая никакой помощи, имея событие, инициирующее независимо, я обошел проблему, используя более крутой изгиб открытия панели для ослабления. Это позволяет открывать панель с относительно медленным запуском и показывать слайд-шоу с изменением размера.