JQuery анимированный зависший из-под контроля - PullRequest
2 голосов
/ 16 февраля 2010

Я использую следующий код в качестве функции наведения на миниатюры:

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

Проблема в том, что, когда я слишком быстро перемещаюсь по большому пальцу, эффект постоянно мигает ... Могу ли я что-то добавить в блок if, чтобы предотвратить это?

Ответы [ 3 ]

5 голосов
/ 16 февраля 2010

Используйте stop(), чтобы остановить текущую анимацию перед началом новой, она должна работать:

$(function (){      
    $('.button').hover(function() {  
        $(this).stop().animate({opacity: 0.7}, 'fast');
    },
    function(){
        $(this).stop().animate({opacity: 1}, 'fast' );
    });
});
2 голосов
/ 23 октября 2012

Вы можете заставить эффекты не ставиться в очередь:

$(function() {
   $('.button').hover(function(){ 
        $(this).animate({opacity: 0.7}, { duration: 'fast', queue: false });
    },
    function(){
        $(this).animate({opacity: 1}, { duration: 'fast', queue: false } );
    }
);
})
1 голос
/ 16 февраля 2010

Плагин hoverIntent служит для этой цели, проверьте его. Чтобы применить его с параметрами по умолчанию, вы просто изменили бы:

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

до:

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