2012-03-02 49 views

回答

3

不幸的是,在执行内部_clear()函数之前执行恢复动画,该函数触发事件beforeStopstop

可能的解决方法是为revert选项提供一个数字,而不是布尔值。从documentation

如果设置为true,则该项目将以平滑动画恢复到其新的DOM位置。或者,也可以将其设置为以毫秒为单位控制动画持续时间的数字。

所以,你可以设置一个较小的复归动画时长,例如150毫秒,所以它看起来并不太慢:

$("#sortable").sortable({ 
    start: function(){ $('#overlay').show('fast'); }, 
    stop: function(){ $('#overlay').hide('fast'); }, 
    revert: 150 
}); 

在补,你可以通过定义定义one-time mouseup event更换stop事件在助手开始拖动时,您将在其中开始隐藏您的#overlay元素。只要松开鼠标按钮,该处理器将随着还原动画执行:

$("#sortable").sortable({ 
    start: function(){ 
     // set a one-time "mouseup" event on the helper 
     $(ui.helper).one('mouseup', function() { 
      // when mouse button is released, "#overlay" will start hiding 
      // along with reverting animation 
      $('#overlay').hide('fast'); 
     }); 
     $('#overlay').show('fast'); 
    }, 
    revert: 150 
}); 

DEMO

+0

我喜欢慢恢复动画,但你的鼠标松开招正是我一直在寻找对于。一旦你看到它,一切似乎都很明显:-)感谢你为我制作jfiddle的额外时间! – adamdport 2012-03-05 15:37:32

+0

嗯,我首先提出了恢复动画,更多的是把戏,让我想起了小提琴时的实际解决方案。很高兴帮助! – 2012-03-05 15:46:57

相关问题