jQuery resizable()动态maxWidth选项

Vit*_*kov 4 javascript css jquery user-interface jquery-ui

我有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)
}
Run Code Online (Sandbox Code Playgroud)

Div*_*ivi 6

看看这个:http://jqueryui.com/demos/resizable/#option-maxWidth

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

之后需要显式设置maxWidth,如下所示:

$( "#midResizable" ).resizable( "option", "maxWidth", mWid );
Run Code Online (Sandbox Code Playgroud)