Search code examples
jqueryanimationmouseoutmouseenter

Jquery animation on mouseover and stop on mouseout


i have six buttons with this code :

$('img#b1').on('mouseenter', function() {
    var height = $('div#b1').css('height');
    if(height == '50px'){
        $('div#b1').animate({
        'width' : '1100'
    }, 200);
    }
});
$('img#b1').on('mouseout', function() {
    var height = $('div#b1').css('height');
    if(height == '50px'){
        $('div#b1').animate({
        'width' : '990'
    }, 200);
    }
});

it works but if you quickly move mouse over and out for few times then take mouse out, it will resume the animation for times mouse went over it.

i dont want to resume animation if mouse is not over it.

how can i fix that?


Solution

  • You should code like the following:

    $('img#b1').on({
        mouseenter: function() {
            var height = $('div#b1').css('height');
            if(height === '50px'){
                $('div#b1').stop().animate({
                    width: 1100
                }, 200);
            }
        },
        mouseout: function() {
            var height = $('div#b1').css('height');
            if(height === '50px'){
                $('div#b1').stop().animate({
                    width: 990
                }, 200);
            }
        }
    });
    

    It makes your code more clearly.