Я хотел бы иметь DIV, который перемещается вверх и вниз несколько раз с помощью JQuery. Другими словами, div начинается в верхней части некоторого места, перемещается вниз, а затем возвращается назад и повторяет это, примерно через 1 секунду от перехода сверху вниз и 1 секунду назад. Есть slideUp и slideDown, а также методы анимации, но я не уверен, как это сделать, поскольку он должен быть в бесконечном цикле, а в javascript вы должны избегать таких циклов.оживляющий Div вверх и вниз несколько раз
ответ
одушевленные логика JQuery благополучно может быть вызвана с обратными вызовами или соединены друг с другом без использования SetTimeout/setInterval:
Что-то, как это должно работать нормально для вас
function loop() {
$('.bouncer').animate({'top': '500'}, {
duration: 1000,
complete: function() {
$('.bouncer').animate({top: 0}, {
duration: 1000,
complete: loop});
}});
}
loop();
Это так фрикен прохладно! Кажется, это исключает использование slideUp/slideDown. – AndroidDev
Обновлено демо, чтобы показать внешнюю петлю, выходящую на всякий случай, если были какие-то сомнения. – dc5
спасибо! помните, что вам не хватает одиночных кавычек в полной функции. –
использование 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)
Я думал об этом, но вы используете setInterval, который содержит интервал таймера в дополнение к отдельному времени анимации 500 мс. Это не хорошо, потому что два могут существенно выйти из синхронизации. – AndroidDev
без (приятного) плохого бесконечного цикла. Я не вижу этого без setinterval. – chiliNUT
@ dc5 показывает, что это можно сделать! – AndroidDev
вы можете подготовить jsfiddle demo того, что вы хотите –
Как насчет 'setInterval'? Он используется для выполнения одного и того же действия каждые X миллисекунд. Вы используете переменную типа 'isDown', логическое значение, которое вы чередуете между истинным и ложным, каждый раз при анимации вашего блока вверх и вниз, а затем' switch' или просто 'if', чтобы продвинуть его вверх, если он опущен, и вниз, если это вверх. – Ariane
обратные вызовы должны снизить потребность в булевой флаг – chiliNUT