Я хочу, чтобы моя 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' }); });
ответ
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/
ок спасибо :) с этим, проблема почти решена. остается только одна проблема, когда я быстро нахожусь с одной картинки на другую и остаюсь на второй секунде на втором рисунке, я не хочу, чтобы первый рисунок увеличился. При использовании функции задержки две фотографии будут увеличиваться, когда я быстро перейду от одной картинки к другой: /. – breght
@breght понял, поэтому вам нужно остановить анимацию при мышином – sbaaaang
@breght проверить это, если это нормально для вас http://jsfiddle.net/fwUMx/1160/ – sbaaaang
Здесь вы идете:
$('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)
});
});
@breght - это код, который вы хотите? – John
никакой задержки на анимацию вообще для меня в вашей скрипке. –
Вы можете использовать функцию .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'
});
});
Вы можете использовать .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;}
попробовать '.delay()' функцию http://api.jquery.com/delay/ –