我有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)
}
答案 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){
}
});