2011-01-11 47 views
2

我正在使用UI.Layout,尝试创建类似于ExtJs布局的行为:在关闭/打开水平窗格时,应将调整器隐藏并重新显示一个幻灯片效果。jQuery UI.Layout:如何延迟窗格打开

在窗格关闭时很容易,因为效果出现在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-队列干扰的方式,并setTimeout()就帮不上什么忙,有事件触发而不管,我使用开放fx缓动的窗格的更陡的曲线避开了问题。这允许窗格以相对缓慢的开始打开,并且显示调整器后退幻灯片。