Я пытаюсь запустить анимацию только тогда, когда мышь над объектом. Я могу получить одну итерацию анимации, а затем вернуть ее к нормальной работе. Но я хотел бы, чтобы анимация зациклилась на мыши. Как мне это сделать, используя setInterval? Я немного застрял.jQuery непрерывная анимация на mouseover
ответ
Это может быть сделано, как это:
$.fn.loopingAnimation = function(props, dur, eas)
{
if (this.data('loop') == true)
{
this.animate(props, dur, eas, function() {
if($(this).data('loop') == true) $(this).loopingAnimation(props, dur, eas);
});
}
return this; // Don't break the chain
}
Теперь вы можете сделать это:
$("div.animate").hover(function(){
$(this).data('loop', true).stop().loopingAnimation({ left: "+10px"}, 300);
}, function(){
$(this).data('loop', false);
// Now our animation will stop after fully completing its last cycle
});
Если вы хотите анимации сразу остановки, вы можете изменить hoverOut
линии для чтения :
$(this).data('loop', false).stop();
setInterval
возвращает идентификатор, который можно передать в clearInterval
, чтобы отключить таймер.
Вы можете написать следующее:
var timerId;
$(something).hover(
function() {
timerId = setInterval(function() { ... }, 100);
},
function() { clearInterval(timerId); }
);
Рассмотрим:
<div id="anim">This is a test</div>
с:
#anim { padding: 15px; background: yellow; }
и:
var over = false;
$(function() {
$("#anim").hover(function() {
over = true;
grow_anim();
}, function() {
over = false;
});
});
function grow_anim() {
if (over) {
$("#anim").animate({paddingLeft: "100px"}, 1000, shrink_anim);
}
}
function shrink_anim() {
$("#anim").animate({paddingLeft: "15px"}, 1000, grow_anim);
}
Вы можете добиться этого, используя таймеры.
Прохладный раствор. Я все еще новичок в JS. Как бы я сделал этот родовой так, если бы у меня было несколько анимаций, я бы предположил, что я буду передавать идентификатор в функции, а затем каждый раз называть его для каждого типа? может ли функция() взять там параметры, и hwo я бы назвал бы это для каждого вида, это действительно лучшее решение? –
Я нуждался в этом, чтобы работать более одного объекта на странице, так что я изменил немного кода Клетуса в:
var over = false;
$(function() {
$("#hovered-item").hover(function() {
$(this).css("position", "relative");
over = true;
swinger = this;
grow_anim();
}, function() {
over = false;
});
});
function grow_anim() {
if (over) {
$(swinger).animate({left: "5px"}, 200, 'linear', shrink_anim);
}
}
function shrink_anim() {
$(swinger).animate({left: "0"}, 200, 'linear', grow_anim);
}
- 1. Анимация появления div на mouseover в jquery
- 2. Непрерывная анимация слайдера без пробелов jQuery
- 3. Непрерывная анимация в iOS?
- 4. Непрерывная анимация Android
- 5. Непрерывная анимация Android
- 6. JQuery mouseover анимация тот же самый элемент
- 7. jQuery mouseover, анимация влево или вправо, а true
- 8. jQuery анимация mouseover/mouseout сохранить меню перетаскивания
- 9. Плавная непрерывная анимация без прыжков
- 10. Анимация Button.Background для LinearGradientBrush на MouseOver
- 11. jQuery Mouseover на Ipad
- 12. Анимация элемента mouseover и animate.css
- 13. jquery .animate() mouseover/mousout
- 14. Быстрое непрерывное вращение Анимация не такая непрерывная
- 15. iOS непрерывная затухание и затухающая анимация
- 16. jquery mouseover animation jumping
- 17. Событие jQuery mouseover на image.Advice?
- 18. jQuery mouseover на динамических объектах
- 19. JQuery: оптимизация Droppable на MouseOver
- 20. jQuery Вертикальная непрерывная прокрутка
- 21. Mouseover анимация не работает прямо на мышь быстро движется
- 22. анимация на JQuery сломаны
- 23. JQuery - фоновая цветная анимация
- 24. mouseover mouseout не работает анимация на нескольких ul's
- 25. Shift + mouseover with jQuery
- 26. лучший способ jQuery mouseover?
- 27. jQuery mouseover/mouseout probel
- 28. JQuery Mouseover/MouseOut мерцает
- 29. jQuery mouseover с синхронизацией
- 30. jQuery - addClass() mouseover
мне пришлось переключить свой ответ из-за проблем трейлерах рекурсии. Я не могу заставить вас ответить на работу с методом loopingAnimation - если я изменю его на «оживить», он выполняет одну итерацию. –
Doug, * animate * call не хватало закрывающей круглой скобки, поэтому я добавил его, но этого было недостаточно, чтобы сохранить, так как вам нужно как минимум 6 модификаций chars, поэтому я с отступом для вашего кода с этой целью. FYI. –