JQuery последователни действия

  • Автор Автор What
  • Начална дата Начална дата

What

Registered
Имаше ли някакъв начин JQuery библиотеката да изпълни дадени функции последователно.

тоест аз имам да пусна 3 анимации с .animate()
но не са за един и същи обект и не се изчакват и тръгват едновременно.
как мога да направя така че да са последователни и да се изчакват преди да се пусне следващата?
 
виж в документацията callback функцията. ето пример от сайта на jQuery.
Код:
$('#clickme').click(function() {
  $('#book').animate({
    opacity: 0.25,
    left: '+=50',
    height: 'toggle'
  }, 5000, function() {
    // eto tuk koda na drugata animaciq i v neq o6te ako iska6
  });
});
 
Така ще стане, но в моя случай е че винаги функциите които ги искам последователно са различни.

Някакво друго предложение?
 
Ми пример като отгоре мога да взема:
Код:
function asd1(){
    $('#book1').animate({opacity: 0.25,}, 1000,); 
}
function asd2(){
    $('#book2').animate({opacity: 0.25,}, 2000,); 
}
function asd3(){
    $('#book3').animate({opacity: 0.25,}, 3000,); 
}
function asd4(){
    $('#book4').animate({opacity: 0.25,}, 4000,); 
}
И сега примерно искам последователност от asd3();asd4();asd2();
НО тя винаги е различна и затова хамалщината не помага тук.
трябва си някаква функция да се направи или нещо такова
 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {
function asd1(){
$('#book1').animate({opacity: 0.25}, 1000,function() {asd2();});
}
function asd2(){
$('#book2').animate({opacity: 0.25}, 2000,function() {asd3();});
}
function asd3(){
$('#book3').animate({opacity: 0.25}, 3000,function() {asd4();});
}
function asd4(){
$('#book4').animate({opacity: 0.25}, 4000);
}
$("#f").click(function() {asd1();});
});
</script>
<div id="book1">aaaaaaaaaaaaaaaaaaa<br />ijxczgciuzxhgczxihjb lhcz</div><br /><br />
<div id="book2">aaaaaaaa<br />aaa<br />aaaaaaa<br />asad<br />ijxczgciuzxhgczxihjb lhdsadsacz</div><br /><br />
<div id="book3">aaaaaaaa<br />aa<br />aaaaasdasdaaasadaaa<br />ijxczgciuzxhgczxihjb lhcz</div><br /><br />
<div id="book4">aaaaaaaaa<br />aaaaaaaaaaijxczgciuzxhgczxihjb lhcz</div><br /><br />
<button id="f">Click</button>
Тествай го така и виж кода в червеното...
 
Явно ще трябва сам да си го измисля.
Не става така.
Просто не се знае дали след asd1() ще бъде asd4() или asd3().
Аз исках съвсем отделна функция която да ги изпълнява подред.
така кода става по-гъвкав, а не като някаква хамалщина.
 
Код:
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#f").click(function() {
	$('#book1').animate({opacity: 0.25}, 1000, function() {
		$('#book2').animate({opacity: 0.25}, 2000, function() {
			$('#book3').animate({opacity: 0.25}, 2000, function() {
				$('#book4').animate({opacity: 0.25}, 4000);
			});
		});
	});
});
});
</script>
<div id="book1">aaaaaaaaaaaaaaaaaaa<br />ijxczgciuzxhgczxihjb lhcz</div><br /><br />
<div id="book2">aaaaaaaa<br />aaa<br />aaaaaaa<br />asad<br />ijxczgciuzxhgczxihjb lhdsadsacz</div><br /><br />
<div id="book3">aaaaaaaa<br />aa<br />aaaaasdasdaaasadaaa<br />ijxczgciuzxhgczxihjb lhcz</div><br /><br />
<div id="book4">aaaaaaaaa<br />aaaaaaaaaaijxczgciuzxhgczxihjb lhcz</div><br /><br />
<button id="f">Click</button>
Аз за друг начин не се сещам, ако искаш го ползвай този. Не вярвам, че някой ще се сети за друго.
 
аз се сетих
функция с някакъв параметър масив който да съдържа функциите и с setTimeout да се въртят.
поне времето се знае.
 

Back
Горе