2013-07-25 3 views
1

У меня есть 3 div, которые имеют простую анимацию для перемещения справа налево. Как установить интервалы, применяя к ним функции.Добавить функцию в определенный интервал

Например, 2-й дивизор должен сдвигаться с 1-й задержкой и должен анимировать после 3-го так далее.

Html

<div class="Objects"></div> 
<div class="Objects"></div> 
<div class="Objects"></div> 
<button class="trigger">Click Me</button> 

Css

.Objects{ width:200px; height:100px; background:#ccc; margin:10px; position:relative; left:500px;} 

Script

$(".trigger").click(function() { 
    $(".Objects").animate({left:'0px'}); 
}); 

Рабочая ссылка

http://jsfiddle.net/vivekdx/xZn3u/

ответ

3

Я использую setTimeout command. Выполняет функцию после указанной задержки.

Итерируя по массиву jQuery, содержащему выбранные div, я умножаю базовую задержку на текущий индекс. Поэтому каждый вызов функции slideLeft задерживается с каждой итерацией.

Я изменил сценарий к следующему:

var slideLeft = function($item) { 
    $item.animate({left:'0px'}); 
} 

$(".trigger").click(function() { 
//  $(".Objects").animate({left:'0px'}); 

    $(".Objects").each(function(index, item) { 
     setTimeout(slideLeft, 200 * (index + 1), $(item)); 
    }); 

}); 

Работа дема на основе вашей скрипки: http://jsfiddle.net/xZn3u/1/

+0

Thanks Jo. Есть ли способ сделать то же самое с функцией addClass в определенный промежуток времени. –

+0

Если я правильно вас понимаю, вы можете добавить что-то вроде '$ item.addClass (« slided »);' to 'slideLeft'. Или, если вы хотите, чтобы класс был добавлен после завершения анимации, вы можете добавить обратный вызов функции анимации и добавить туда класс. –

+0

@VivekDragon взгляните на обновленную скрипку: http://jsfiddle.net/xZn3u/2/ –

0

одушевленное JQuery имеет «совершенное» свойство, которое вызывается, когда анимация завершена. Пример:

$item.animate({left:'0px'}, function() { 
    // next call 
}); 

api см

2

Пожалуйста, попробуйте следующий код и он будет работать для вас ..

$(".trigger").click(function(){ 
    var el = $(".Objects"); 
    $.each(el, function(key, value) { 
    var tm = 1000*key; 
    $(value).delay(tm).animate({left:'0px'}); 
    }); 
}); 

Пожалуйста, обратите внимание на следующую ссылку, чтобы увидеть выход

http://jsfiddle.net/xZn3u/4/

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