jQuery UI 布局 - 如何更改窗格的选项并在不切换窗格的情况下动态应用它们 open/closed?

jQuery UI Layout - How change a pane's options and dynamically apply them without toggling the pane open/closed?

http://jsfiddle.net/jc3rj681/2/

使用插件 jQuery UI Layout,我有几个不同的面板。当用户将 window 调整为较小尺寸时,我想调用一个函数来更改窗格的 minsizesize 以便我可以使用 [= 使其变小38=].

我可以这样做,但要应用更改,我必须切换关闭然后切换打开窗格。这会产生很多闪烁,最终看起来非常凌乱。我只需要一个窗格以这种方式调整大小。

问题:有没有一种方法可以应用这些布局更改而无需切换窗格两次以应用它们?

看看我做的这个 Fiddlehttp://jsfiddle.net/jc3rj681/2/

在这里,对 show/hide 按钮的 "width" 的更改只有在您切换窗格后才会应用。如果你能在不切换的情况下使这个宽度变化起作用,我相信它也会解决我的问题。

$("#eastToggle").click(function () {

    testLayout.toggle('east');    
});


$("#attempt").click(function () {
    testLayout.options.east.spacing_closed = 20;
    testLayout.options.east.spacing_open = 20;
});

我不确定是否有回调函数或任何特殊实用方法可以解决问题。

但您可以尝试如下操作(可能使用可手动调整窗格大小的调整大小功能)-

var testLayout = $('body').layout({
  applyDefaultStyles: true,
  east: {
    spacing_closed: 100, //toggler width
    spacing_open: 100,
    togglerLength_closed: 200, //toggler height (length)
    togglerLength_open: 200
  }
});

$("#eastToggle").click(function() {

  testLayout.toggle('east');

});


$("#attempt").click(function() {
  resize('east', 20);
});


// A function to resize the tab
function resize(region, space) {
  // Width of the new center pane
  var newCenterWidth = parseInt($('body .ui-layout-center').css('width').split('px')[0]) + testLayout.options.east.spacing_closed - space;

  // Change the options so they don't affect the layout when you expand / collapse again
  testLayout.options.east.spacing_closed = space;
  testLayout.options.east.spacing_open = space;

  // Manually resize the panes
  $('body .ui-layout-resizer-' + region).css('width', space);
  $('body .ui-layout-center').css('width', newCenterWidth);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://layout.jquery-dev.net/lib/js/jquery.layout-latest.js"></script>
<div class="ui-layout-center">Center</div>
<div class="ui-layout-north">North</div>
<div class="ui-layout-south">South</div>
<div class="ui-layout-east">East</div>
<div class="ui-layout-west">West
  <br/>
  <br/>

  <button id="eastToggle">Toggle East Panel</button>
  <br/>
  <br/>
  <button id="attempt">Change Width?</button>
</div>