使用可拖动的 Jquery ui,如何在停止时更改反转?

Posted

技术标签:

【中文标题】使用可拖动的 Jquery ui,如何在停止时更改反转?【英文标题】:With Jquery ui's draggable, how do you change the revert on stop? 【发布时间】:2011-10-26 18:11:00 【问题描述】:

我想知道你是如何从 stop 事件更改在 Jquery ui 中拖动的东西的“revert”属性的。

    $('.things').draggable( 
        revert: "true",
        stop: function(event, ui)
                        //if something then set revert to false
        
    );

我尝试了一些方法,但似乎无法正常工作。

干杯。

【问题讨论】:

【参考方案1】:

stop 事件发生得太晚,revert 选项的更改不会影响当前的拖动操作。可拖动对象仍会还原,即使在下一次拖动中不再还原。

您可能希望改为绑定到 drag 事件:

$('.things').draggable( 
    revert: true,
    drag: function(event, ui) 
        if (/* something */) 
            $(this).draggable("option", "revert", false);
        
    
);

【讨论】:

这行得通,但我不想在拖拽上附加一些大的处理,它在 IE 和较旧的 FF 中大大减慢了它的速度。在拖动的生命周期中是否还有其他任何东西可以附加到,预先停止的东西。 唉,据我所知没有。您能否详细说明您为确定something 而执行的繁重处理?也许有更好的方法来实现您想要实现的目标。【参考方案2】:

我意识到自从提出这个问题以来已经有一段时间了,但是在 JQuery UI 1.10 及更高版本中,draggable 现在支持将函数作为 revert 的值。如果该值返回 true,则位置会恢复,否则不会。

$('.things').draggable( 
    revert: function() 
        if(condition_is_met()) 
             return false; // Don't revert
         else 
             return true;
        
    
);

【讨论】:

以上是关于使用可拖动的 Jquery ui,如何在停止时更改反转?的主要内容,如果未能解决你的问题,请参考以下文章

克隆上的jquery ui可拖动停止功能

如何使用 jquery ui 可拖动突出显示悬停时的可放置​​区域

使用 jQuery UI 拖放:更改拖放的元素

如何在恢复可拖动的 jQuery UI 时删除动画?

如何使用 jquery ui 使拖动和克隆的元素再次可拖动?

使用 JQuery 在 Droppend 时停止删除可拖动元素