Это связано с очередью события.Обычно я делаю это так:
$(".thumbnail").hover(function(){
$(".play", this).stop().animate({opacity:1}, "fast");
}, function(){
$(".play", this).stop().animate({opacity:0}, "fast");
});
stop () делает то, на что это похоже.Останавливает всю анимацию и, поскольку цепочки jQuery, вызывает animate после остановки объекта.
Вы не получаете метод toggle, но я предпочитаю делать это таким образом из-за контроля, который я получаю в методе jimate jQuery.