javascript - jQuery UI 可删除 'drop' 事件等待恢复

标签 javascript jquery jquery-ui jquery-ui-draggable jquery-ui-droppable

我正在使用 jQueryUI 开发一些简单的拖放交互。在某些情况下,我希望拖动的项目回到原来的位置( revert )然后摇动。我将奶昔放在 drop event 中可删除对象的,但它似乎没有等待恢复完成。

更糟糕的是,有时它在开始恢复到原始位置之前摇晃,有时完全恢复完成后摇晃,有时摇晃变得越来越严重夹在中间。不一致。

有没有办法执行drop可拖放对象完成其操作后发生的事件revert

请参阅此 JSFiddle 示例:http://jsfiddle.net/sbQUE/

换句话说,如果我按如下方式设置 droppable:

this.$el.droppable({
    drop: someFunction
});

...执行的函数是:

someFunction: function(ev, el){
    $(el.draggable).effect('shake');
}

...并且将落在可放置对象上的可拖动对象设置如下:

this.$el.draggable({
    revert: true,
    revertDuration: 0 // or any number for that matter
});

如何确保通过恢复选项将可拖动对象返回到其原始位置后执行“someFunction”回调?

注意:我尝试寻找某种恢复后回调或事件,但它不存在(至少在 jQueryUI 的文档中不存在)。

最佳答案

如果您可以为您制作 jsfiddle 示例,我可以将其应用到您的代码中,但通常这可以使用 promise 系统在 jquery 中完成:

你必须做这样的事情:

JavaScript:

 $(function () {
     $("#draggable").draggable({
         revert: "valid"
     });

     $("#droppable").droppable({
         activeClass: "ui-state-hover",
         hoverClass: "ui-state-active",
         drop: function (event, ui) {
             setTimeout(function () {
                 $("#draggable").promise().done(function () {
                     $("#draggable").effect('shake', {}, 500);
                 });
             }, 100);
         }
     });
 });

Here is a solved jsfiddle

如果您想知道 .promise() 之前的 setTimeout 是为了确保恢复动画已被激活。然后promise()会等待直到执行。

关于javascript - jQuery UI 可删除 'drop' 事件等待恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18316011/

相关文章:

javascript - 将箭头放在术语旁边

jquery - 有没有插件可以生成航类座位图?

php - Ajax 安全(我希望)

jQuery 动画在 chrome 上不起作用

javascript - 使用 jquery-ui 调整 div 的大小

javascript - 在 IE7 中加载外部 Javascript 文件的问题

javascript - 使用 javascript 格式化货币的 Handlebars 功能

JavaScript 循环引用循环中的最后一个数字

javascript - 如何使用 Ajax 重新加载页面

css - jquery ui 对话框关闭按钮方向