2013-04-03 1 views
1
  1. Я хочу, чтобы моя jquery-анимация подождала, пока моя мышь не зависнет/не войдет в нее около 2 секунд. В противном случае, когда я собираюсь сделать изображение больше, все станет действительно хаотичным. 2.here мой код, который использует JQuery, чтобы сделать изображение больше, когда он делает MouseEnter:Я хочу, чтобы моя jquery-анимация подождала, пока мышь не войдет в течение 2 секунд

    $('img').mouseenter(function(){ 
    
        $(this).animate({ 
          height: '+=40px', 
         width: '+=40px' 
         }); 
    
    }); 
    $('img').mouseleave(function() {  
    
        $(this).animate({ 
          height: '-=40px', 
         width: '-=40px' 
         }); 
    
    }); 
    
+1

попробовать '.delay()' функцию http://api.jquery.com/delay/ –

ответ

1

delay(); использование

$('img').mouseenter(function(){ 
    var _width = $(this).width(); 
    var _height = $(this).width(); 
    $(this).stop().delay(2000).animate({ 
      height: '+=40px', 
     width: '+=40px' 
    }); 
    $(this).mouseleave(function() {  

    $(this).stop().animate({ 
      height: _height+'px', 
     width: _width+'px' 
     }); 


}); 

}); 

ОБНОВЛЕНО: http://jsfiddle.net/fwUMx/1165/

+0

ок спасибо :) с этим, проблема почти решена. остается только одна проблема, когда я быстро нахожусь с одной картинки на другую и остаюсь на второй секунде на втором рисунке, я не хочу, чтобы первый рисунок увеличился. При использовании функции задержки две фотографии будут увеличиваться, когда я быстро перейду от одной картинки к другой: /. – breght

+0

@breght понял, поэтому вам нужно остановить анимацию при мышином – sbaaaang

+0

@breght проверить это, если это нормально для вас http://jsfiddle.net/fwUMx/1160/ – sbaaaang

0

Здесь вы идете:

$('img').load(function() { 
$(this).data('height', this.height); 
}).bind('mouseenter mouseleave', function(e) { 
$(this).stop().animate({ 
    height: $(this).data('height') * (e.type === 'mouseenter' ? 1.5 : 1) 
}); 
}); 

демо http://jsfiddle.net/simevidas/fwUMx/5/

+0

@breght - это код, который вы хотите? – John

+0

никакой задержки на анимацию вообще для меня в вашей скрипке. –

0

Вы можете использовать функцию .delay() здесь:

$('img').mouseenter(function(){ 
    $(this).stop().delay(2000).animate({ 
     height: '+=40px', 
     width: '+=40px' 
    }); 
}); 
$('img').mouseleave(function() {  
    $(this).stop().delay(2000).animate({ 
     height: '-=40px', 
     width: '-=40px' 
    }); 
}); 
0

Вы можете использовать .delay или SetTimeout.

Ниже пример использования .delay

<p><button>Run</button></p> 
<div class="first"></div> 
<div class="second"></div> 

$("button").click(function() { 
     $("div.first").slideUp(300).delay(800).fadeIn(400); 
     $("div.second").slideUp(300).fadeIn(400); 
    }); 

div { position: absolute; width: 60px; height: 60px; float: left; } 
.first { background-color: #3f3; left: 0;} 
.second { background-color: #33f; left: 80px;} 

http://jsfiddle.net/X5r8r/1118/