У меня есть интерфейс, который делает интенсивное использование jQuery slideUp и slideDown эффекта развернуть объекты в способе с тремя состояниями.
onmouseover: function() {
this.find('.details', this).slideDown();
},
onmouseout: function() {
this.find('.details', this).slideUp();
}
Однако, когда пользователь быстро перемещает мышь через эти интерфейсные элементы, анимации не могут поддержать на высоком уровне, и объекты будут скользить вверх и вниз еще долго после того, как мышь оставила интерфейсную область.
Существует ли способ отменить все стоявшие в очереди анимации слайда, когда мышь оставляет контейнерное отделение объекта?
Я считаю, что вы должны быть в состоянии просто добавить .stop() и он позаботится об этом для вас:
onmouseover: function() {
this.find('.details', this).stop().slideDown();
},
onmouseout: function() {
this.find('.details', this).stop().slideUp();
}
Вообще говоря, вы хотите вызвать stop ()
при запуске такой анимации:
$("...").hover(function() {
$(this).stop().slideDown();
}, function() {
$(this).stop().slideUp();
});
Этого должно быть достаточно, чтобы избежать длительных очередей анимации.
Вы также можете использовать $. ClearQueue ()
для глобальной очистки анимаций, которые еще не начались.
Кроме того, если вы устанавливаете их для mouseover ()
и mouseout ()
, возможно, будет проще просто использовать событие hover ()
вместо .
Также будет намного лучше, если вы поместите параметры в stop ()
, примерно так: stop (true, true)
...