2013-08-21 5 views
1

Я хотел бы иметь DIV, который перемещается вверх и вниз несколько раз с помощью JQuery. Другими словами, div начинается в верхней части некоторого места, перемещается вниз, а затем возвращается назад и повторяет это, примерно через 1 секунду от перехода сверху вниз и 1 секунду назад. Есть slideUp и slideDown, а также методы анимации, но я не уверен, как это сделать, поскольку он должен быть в бесконечном цикле, а в javascript вы должны избегать таких циклов.оживляющий Div вверх и вниз несколько раз

+0

вы можете подготовить jsfiddle demo того, что вы хотите –

+0

Как насчет 'setInterval'? Он используется для выполнения одного и того же действия каждые X миллисекунд. Вы используете переменную типа 'isDown', логическое значение, которое вы чередуете между истинным и ложным, каждый раз при анимации вашего блока вверх и вниз, а затем' switch' или просто 'if', чтобы продвинуть его вверх, если он опущен, и вниз, если это вверх. – Ariane

+0

обратные вызовы должны снизить потребность в булевой флаг – chiliNUT

ответ

10

одушевленные логика JQuery благополучно может быть вызвана с обратными вызовами или соединены друг с другом без использования SetTimeout/setInterval:

Что-то, как это должно работать нормально для вас

Demo

function loop() { 
    $('.bouncer').animate({'top': '500'}, { 
     duration: 1000, 
     complete: function() { 
      $('.bouncer').animate({top: 0}, { 
       duration: 1000, 
       complete: loop}); 
     }}); 
} 
loop(); 
+0

Это так фрикен прохладно! Кажется, это исключает использование slideUp/slideDown. – AndroidDev

+0

Обновлено демо, чтобы показать внешнюю петлю, выходящую на всякий случай, если были какие-то сомнения. – dc5

+0

спасибо! помните, что вам не хватает одиночных кавычек в полной функции. –

0

использование setInterval, смотрите здесь: http://www.w3schools.com/js/js_timing.asp

так попробовать этот

Javascript

$(document).ready(function() { 
    setInterval(function() { 
     $('#thediv').slideUp('500', function() { 
      $('#thediv').slideDown('500'); 
     }); 
    }, 1000); 
}); 

HTML

<div id='thediv' style='width:100px;height:200px;border:1px solid black;'> 
Div Contents 
</div> 

вам может понадобиться настроить тайминги (которые в miliseconds)

+0

Я думал об этом, но вы используете setInterval, который содержит интервал таймера в дополнение к отдельному времени анимации 500 мс. Это не хорошо, потому что два могут существенно выйти из синхронизации. – AndroidDev

+0

без (приятного) плохого бесконечного цикла. Я не вижу этого без setinterval. – chiliNUT

+0

@ dc5 показывает, что это можно сделать! – AndroidDev

 Смежные вопросы

  • Нет связанных вопросов^_^