Отмените весь jQuery slideUp с очередями и slideDown анимации

У меня есть интерфейс, который делает интенсивное использование jQuery slideUp и slideDown эффекта развернуть объекты в способе с тремя состояниями.

onmouseover: function() { 
this.find('.details', this).slideDown(); 
},
onmouseout: function() { 
this.find('.details', this).slideUp(); 
}

Однако, когда пользователь быстро перемещает мышь через эти интерфейсные элементы, анимации не могут поддержать на высоком уровне, и объекты будут скользить вверх и вниз еще долго после того, как мышь оставила интерфейсную область.

Существует ли способ отменить все стоявшие в очереди анимации слайда, когда мышь оставляет контейнерное отделение объекта?

18
задан Candidasa 2 March 2010 в 00:51
поделиться

3 ответа

Я считаю, что вы должны быть в состоянии просто добавить .stop() и он позаботится об этом для вас:

onmouseover: function() { 
this.find('.details', this).stop().slideDown(); 
},
onmouseout: function() { 
this.find('.details', this).stop().slideUp(); 
}
32
ответ дан 30 November 2019 в 05:48
поделиться

Вообще говоря, вы хотите вызвать stop () при запуске такой анимации:

$("...").hover(function() {
  $(this).stop().slideDown();
}, function() {
  $(this).stop().slideUp();
});

Этого должно быть достаточно, чтобы избежать длительных очередей анимации.

Вы также можете использовать $. ClearQueue () для глобальной очистки анимаций, которые еще не начались.

Кроме того, если вы устанавливаете их для mouseover () и mouseout () , возможно, будет проще просто использовать событие hover () вместо .

8
ответ дан 30 November 2019 в 05:48
поделиться

Также будет намного лучше, если вы поместите параметры в stop () , примерно так: stop (true, true) ...

6
ответ дан 30 November 2019 в 05:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: