jquery UI可拖动:在满足某些条件时控制(暂停)拖动

jquery UI可拖动:在满足某些条件时控制(暂停)拖动,jquery,jquery-ui,draggable,Jquery,Jquery Ui,Draggable,当拖动一个元素时,我正在进行一些计算,当某个条件匹配时,我希望拖动到暂停 我不想触发鼠标事件,只是暂停一下 我有一个完美的例子 请查看容器和矩形列表。 我想要达到的是与遏制相反的效果 如果我将容器设置为.draggable_包装,那么我的UL列表将被限制在里面…我不希望这样 我想要的是,当我拖动列表时,如果列表位置大于零(>0),暂停向右拖动,只允许向左拖动(因此拖动到负位置) 我不想让第一个李的左边界一直到集装箱左边界的右边 在另一边,同样的事情。。。。当向左拖动时。。。我想在8点的时候停下来

当拖动一个元素时,我正在进行一些计算,当某个条件匹配时,我希望拖动到暂停

我不想触发鼠标事件,只是暂停一下

我有一个完美的例子

请查看容器和矩形列表。 我想要达到的是与遏制相反的效果

如果我将容器设置为.draggable_包装,那么我的UL列表将被限制在里面…我不希望这样

我想要的是,当我拖动列表时,如果列表位置大于零(>0),暂停向右拖动,只允许向左拖动(因此拖动到负位置)

我不想让第一个李的左边界一直到集装箱左边界的右边

在另一边,同样的事情。。。。当向左拖动时。。。我想在8点的时候停下来。li的右边界穿过容器的右边界(在位置小于-55px的示例中发生这种情况

所以为了让它更具可读性

$(....).draggable({
....
drag: function(){
var p_left = $(this).position().left;

if(left > 0) stop_dragging_right, allow only left;
if(left < -55px) sto_dragging_left, allow_only_right;

});
$(..).draggable({
....
拖动:函数(){
var p_left=$(this).position().left;
如果(左>0)停止向右拖动,则只允许向左;
如果(左<-55px)停止向左拖动,则只允许向右拖动;
});

我该怎么做呢?约束时也会执行类似操作。如果条件为false,您可以覆盖正在拖动的元素的位置,并应用相同的位置

此小提琴是位置超控的一个示例:

此提琴示例说明了如何检查拖动的元素是否靠近容器的边界:


通过定义可拖动区域的边界,可以限制/约束可拖动元素的移动

您是否可以使用外部父级/安全壳来限制阻力? 你可以做如下的事情

$( "#draggable5" ).draggable({ containment: "parent" });
此父项在两侧扩展,满足您的计算约束


希望这对您有所帮助。

您可以通过在选项中传递数组来获得包装器元素的坐标,并提供您自己的容器:


您将发现一个更新的小提琴。

感谢您的及时回复…我努力设置位置:…但当满足条件时,它停止拖动,我可以再向左移动它。您应该为这个答案获得一枚金牌。谢谢!正是我想要的!
$( "#draggable5" ).draggable({ containment: "parent" });
var wrapperOffset = $(".draggable_wrapper").offset();
$('.draggable_wrapper ul').draggable({
    distance: 3,
    axis: "x",
    revert: false,
    scroll: false,
    containment: [
        wrapperOffset.left - 55,
        wrapperOffset.top,
        wrapperOffset.left,
        wrapperOffset.top
    ],
    drag: function(e) {
        $('#posx').val($(this).position().left);
    }
});