2013-11-22 2 views
0

На MouseMove событие я привязал серия функций FadeIn/FADEOUT к компоненту, как это:JQuery отвязать не является мгновенным

$("#cropshiftbundle").bind("mousemove", function() {         
     $("#cropimgbtn").fadeOut(200).fadeIn(200).fadeOut(200).fadeIn(200); 
}); 

затем на событие щелчка, я развязал событие курсора, находящегося примерно так:

Ну, я знаю, что unbind происходит мгновенно, но кажется, что он все еще является серией fadeIn/fadeOut, которые были уже запущены и будут влиять на компонент независимо от того, что происходит с unbind. (Я не знаю, это правда ..), поэтому unbind выглядит не мгновенно .. Итак, что можно сделать, чтобы остановить eveything только тогда, когда происходит развязка? Приветствия!

+1

Действительно, это выглядит как хорошая идея, связывающая событие, которое срабатывает сотни раз в секунду для функции, которая ставит в очередь четыре анимации на каждый пиксель, который перемещает мышь? – adeneo

+0

- это не то, что на самом деле происходит? :) – Bardelman

+1

он имел в виду, что это очень плохая идея .. –

ответ

1

Попробуйте .stop(true,true)

Остановить текущий запущенную анимацию на соответствующих элементах.

$("#cropimgbtn").stop(true,true) 
$("#cropshiftbundle").off("mousemove"); 

и лучше использовать .off()

1

Это происходит потому, что там будет еще очередь анимации в fx очереди, вы можете использовать .stop(), чтобы очистить очередь, но имейте в виду, что в настоящее время анимация завершится

$("#cropimgbtn").stop(true,true); 
$("#cropshiftbundle").off("mousemove"); 

Демо: Fiddle

Смежные вопросы