Попробуйте убрать обработчик hover и добавить обработчик на mouseleave function slidebut(i) { $("#anim" + i).stop().animate({left: "55px"}, "fast"); $("#st" + i).one('mouseleave', function(){ $("#anim" + i).stop().animate({left: "0"}, "fast"); }); } в принципе нормально если не лениво добавлять атрибут onmouseover в каждый элемент если туда вместо значения 1, 2, 3... опустить this немного поунифицирование будет сама функция и можно лишьние id anim1, anim2, anim3... убрать function slidebut(el) { $('.bgbox', this).stop().animate({left: "55px"}, "fast"); $(this).one('mouseleave', function(){ $('.bgbox', this).stop().animate({left: "0"}, "fast"); }); } по идее должно работать