jQuery resizable为每个方向指定不同的最大值

时间:2012-08-17 13:40:48

标签: jquery jquery-ui resizable jquery-ui-resizable

我会在可调整大小的div上指定不同的最大约束。 例如,我希望北方向最大调整大小为20px,南方调整大小为200px。

我可以通过maxHeight轻松地向一个方向执行此操作,并将句柄限制为一个方向,但我无法同时管理这两个方向。

这绝对不可能吗?

1 个答案:

答案 0 :(得分:4)

请,jQuery和jQuery UI不一样。

jQuery UI可调整大小的小部件为您提供了一组选项。其中一个是你注意到的 maxHeight ,但也有 minHeight 。当然还有宽度的等价物。

如果你有一个固定高度项(100px),你可以简单地使用这个代码来向北20px和向南200px:

$("#resizable").resizable(
{
    maxHeight: 300,
    minHeight: 80
});

现在,如果您不知道变量高度,您可以随时使用jQuery找到它:

$("#resizable").resizable(
{
    maxHeight: parseInt($("#resizable").height(),10)+200,
    minHeight: parseInt($("#resizable").height(),10)-20
});

更好的是,如果您希望能够使用20px / 200px的步骤调整其大小,您可以尝试使用停止事件:

$("#resizable").resizable(
{
    maxHeight: parseInt($("#resizable").height(),10)+200,
    minHeight: parseInt($("#resizable").height(),10)-20,
    stop: function(event,ui)
    {
        $("#resizable").resizable("option","maxHeight",parseInt($("#resizable").height(),10)+200);
        $("#resizable").resizable("option","minHeight",parseInt($("#resizable").height(),10)-20);
    }
});

现在,如果您想使用两个不同的句柄增加其高度但具有单独的限制,您可以使用句柄的类来强制另一个限制:

var originalHeight = parseInt($("#resizable").height(),10);
$("#resizable").resizable(
{
    maxHeight: originalHeight+20,
    minHeight: originalHeight, // decrease height impossible
    start: function(event,ui)
    {
        if($(event.originalEvent.target).hasClass('ui-resizable-s'))
        {
            $("#resizable").resizable("option","maxHeight",originalHeight+200);
        }
        else
        {
            $("#resizable").resizable("option","maxHeight",originalHeight+20);
        }
    }
});

如果您不希望稍后调整元素的大小,您还可以在停止事件中添加类似的内容:

,
stop: function()
{
    $("#resizable").resizable("option","minHeight",parseInt($("#resizable").height(),10));
}