我有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)
}
解决方法:
看看这个:http://jqueryui.com/demos/resizable/#option-maxWidth
看起来像maxWidth:mWid,只在init上调用.
之后需要显式设置maxWidth,如下所示:
$( "#midResizable" ).resizable( "option", "maxWidth", mWid );