jQuery fadeToggle if currently animated, ignore further input

时光毁灭记忆、已成空白 提交于 2019-11-29 11:33:26

Change

$('.play', this).fadeToggle(400);

to

$('.play', this).stop(true,true).fadeToggle(400);

your updated fiddle at http://jsfiddle.net/gaby/66FwR/12/


The if statement you mention is by using the :animated selector.

it would look something like

if ( $('.play',this).is(':animated') )
{
 // do whatever..
}

but that will not work in your case, because if you hover out while the button is still fading-in, then the fade-out will not queue and the play button will stay on forever..

This is due to queueing of the event. The way I will usually do it like this:

$(".thumbnail").hover(function(){
    $(".play", this).stop().animate({opacity:1}, "fast");
}, function(){
    $(".play", this).stop().animate({opacity:0}, "fast");
});

the stop() does what it sounds like. Stops all animation and since jQuery's chains, calls the animate after the object has stopped.

You don't get the toggle method but I rather doing it this way because of the control I get in jQuery's animate method.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!