К сожалению, анимация возврата выполняется до выполнения внутренней функции _clear()
, которая запускает события beforeStop
и stop
.
Возможный обходной путь — указать число для параметра revert
вместо логического значения. Из документации:
Если установлено значение true, элемент будет возвращен в новую позицию DOM с плавной анимацией. При желании можно также установить число, определяющее продолжительность анимации в мс.
Таким образом, вы можете установить меньшую продолжительность анимации возврата, например 150 мс, чтобы она не выглядела слишком медленной:
$("#sortable").sortable({
start: function(){ $('#overlay').show('fast'); },
stop: function(){ $('#overlay').hide('fast'); },
revert: 150
});
Кроме того, вы можете заменить событие stop
, определив определение одноразового события mouseup
в помощнике, когда вы начинаете перетаскивание, в котором вы начнете скрывать свой элемент #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
});
ДЕМО
person
Didier Ghys
schedule
03.03.2012