在可调整大小的div上限制位置

时间:2012-08-08 21:45:49

标签: javascript jquery jquery-ui-resizable

这项工作是对我之前未回答的问题的回应:Resizable div doesn't stay within containment parameter

由于我的resizable div(称为 pocket )不是我希望它包含的容器的直接子节点,因此我在{{提供了一个回调函数1}} 应该在容器中包含它的方法。

在这里小提琴:http://jsfiddle.net/dKuER/12/

我的问题

当您将resize div重新调整为左侧(影响其resizable位置)过去网格边界时,它始终尊重我在回调函数中的逻辑。当您向左拖动时,您会注意到一个闪烁的动作,div将在其硬编码的left位置之间切换到鼠标确定的left位置。

根据您停止拖动的时间,div的left位置可能位于硬编码位置或鼠标停止拖动的位置。

如何确保回调函数的逻辑始终受到尊重?

left

1 个答案:

答案 0 :(得分:0)

使用鼠标坐标和通过resizable div的对象方法获得的宽度(如此明显!),而不是从一些模糊的计算中得出它,我能够达到正确的效果

http://jsfiddle.net/dKuER/16/

var x = event.pageX - $('#grid').offset().left;
var y = event.pageY - $('#grid').offset().top; 

if (x < 0)
{
    ui.size.width = $(this).width();
    ui.position.left = $(this).position().left;
}   

我试图理解jquery.ui.resizable代码的核心,实现了这个解决方案。但是,我认为答案比我的答案更可接受。