jQuery draggable revert和stop事件

Bus*_*uke 7 jquery jquery-ui draggable

第一个问题,所以要善良:)

我想要做的是在用户释放draggable时,以及在还原动画完成之前调用函数.

据我所知,只有在还原完成后才会调用stop事件.我已经尝试将函数传递给draggable的revert选项,但它似乎不起作用.这是我的一些代码来展示;

$("a").draggable({
    helper:function(){
        return $("<div/>",{id:"mydrag",text:"link"}).appendTo("body");
    },
    revert:function(evt,ui){
        // $("#mydrag").fadeOut("slow");
        return true;
    },
    stop:function(evt,ui){
        console.log("fin");
    }
});
Run Code Online (Sandbox Code Playgroud)

如果我取消注释恢复函数的第一行 - 淡出 - 则元素淡出但不会恢复.当还原动画完成时,控制台仅记录"fin".

谁能帮我?毋庸置疑,我已经谷歌搜索了很多答案,但没有运气.

巴斯特

Fré*_*idi 11

首先,根据这篇博客,未记录的revert回调只接受一个参数(drop socket对象,false如果drop被拒绝,则为boolean ).

现在,问题是内部draggable使用animate()来重新定位帮助器.显然,该动画排队,只在fadeOut效果结束后才开始播放.

实现您想要的一种方法是执行对animate()自己的调用,如下所示:

revert: function(socketObj) {
    if (socketObj === false) {
        // Drop was rejected, revert the helper.
        var $helper = $("#mydrag");
        $helper.fadeOut("slow").animate($helper.originalPosition);
        return true;
    } else {
        // Drop was accepted, don't revert.
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

这允许可拖动的助手在被还原时淡出.

您可以在此处测试该解决方案.