jQuery resizable()动态maxWidth选项

时间:2011-01-14 05:10:14

标签: javascript jquery css jquery-ui user-interface

我有3个可调整大小的列。当一个变宽时,左边的一个变得更小。基本上只有2个手柄。左坳和中旬。因此,当Mid col变得更薄时,Right col会相应地扩展。它们中的所有三个都包含一个900px的父div,所以三者的总和总是900.它们具有静态设置的最大和最小宽度。

我的问题是,如果你拿左手柄并将其一直向右移动,你仍然可以使用右手柄并将中间col扩展到父div的边缘。

我想到了一种方法来解决这个问题,方法是编写一个检查列宽度的函数,然后从父div宽度中减去左右列,我称之为mWid。这给我留下了我想要设置为Mid col的maxWidth的数字。

现在问题是mWid没有在这里更新“maxWidth:mWid”

以下是右手柄的功能:

$(function() {
    $("#midResizable").resizable({
        handles: 'e',
        containment: '#container',
        maxWidth: mWid, // gets set once, but doesn't update! WHY?
        minWidth: 195,
        resize: function(event, ui) {
            contWidth = $('#container').width()
            newWidth = $(this).width()
            leftWidth = $('#leftResizable').width()
            rightWidth = $('#rightResizable').width()
            $("#rightResizable").css("width", (contWidth-15)-(newWidth)-(leftWidth)+"px");
            checkWid()
        }
    });     
});     

function checkWid() {
    rightWidth = $('#rightResizable').width()
    leftWidth = $('#leftResizable').width()
    contWidth = $('#container').width()
    mWid = (contWidth-15)-(rightWidth)-(leftWidth)
}

2 个答案:

答案 0 :(得分:6)

检查出来:http://jqueryui.com/demos/resizable/#option-maxWidth

看起来像maxWidth:mWid,只能在init上调用。

之后需要明确设置maxWidth,如下所示:

$( "#midResizable" ).resizable( "option", "maxWidth", mWid );

答案 1 :(得分:0)

您可以在resizable的start方法中使用以下代码。每当您尝试调整div元素的大小时,它都会动态更新maxWidth和maxHeight。

$('.droppedBtn').resizable({

  .... //you resizable properties

  start: function(event,ui)
  {

    $( ".CLASSNAME" ).resizable( "option", "maxWidth", layout.lWidth);
    $( ".CLASSNAME" ).resizable( "option", "maxHeight", layout.lHeight);

  },

  stop: function(event,ui){

  }

});