jQuery动画悬停闪烁失控

时间:2010-02-16 10:53:23

标签: jquery hover jquery-animate

我正在使用以下代码作为缩略图上的悬停功能:

$(function (){      
  $('.button').hover(function() {  
    if ($(this).is(":not(animated)")) {
      $(this).animate({opacity: 0.7}, 'fast');
    }
  },
  function() {
    $(this).animate({opacity: 1}, 'fast' );
  });
});

问题在于,当我过快地翻过拇指时,效果会持续闪烁一段时间...是否有什么东西可以添加到if块以防止这种情况发生?

3 个答案:

答案 0 :(得分:5)

使用stop()在开始新动画之前停止当前动画,它应该有效:

$(function (){      
    $('.button').hover(function() {  
        $(this).stop().animate({opacity: 0.7}, 'fast');
    },
    function(){
        $(this).stop().animate({opacity: 1}, 'fast' );
    });
});

答案 1 :(得分:2)

您可以强制效果不排队:

$(function() {
   $('.button').hover(function(){ 
        $(this).animate({opacity: 0.7}, { duration: 'fast', queue: false });
    },
    function(){
        $(this).animate({opacity: 1}, { duration: 'fast', queue: false } );
    }
);
})

答案 2 :(得分:1)

hoverIntent plugin用于此目的,请查看。要使用默认选项应用它,您只需更改:

$('.button').hover(function(){ 

为:

$('.button').hoverIntent(function(){