Këtu është dilema ime. Unë kam 2 animacione që duhet të ekzekutohen në mënyrë sekuenciale.
Animacioni i parë funksionon në një grup elementësh të fituar përmes funksionit siblings()
të jQuery.
Animacioni i dytë funksionon në një element të vetëm. (Ai mbi të cilin u thirr siblings()
.) Kjo duhet të ndodhë pasi të ketë përfunduar animacioni i parë.
Nëse nuk përdor queue()
ose një thirrje mbrapa pas animacionit të parë, ato funksionojnë njëkohësisht.
Nëse përdor queue()
ose një thirrje mbrapsht pas të parit, atëherë animacioni i dytë përfundon shumë herë (një herë për secilin nga vëllezërit e motrat).
Pra, si mund të vendos me sukses një animacion për të ekzekutuar një herë pas një animacioni grupor?
(Kam gjetur një hak që funksionon, por shpresoj se ka një mënyrë të duhur për ta arritur këtë.)
Shembull i thjeshtuar:
<html>
<head>
<title>tester page</title>
<style>
<!--
.fadebutton, .resizebutton {
cursor: pointer;
color: white;
margin: 10px 0 10px 0;
background: blue;
padding: 2px;
display: table;
}
.box {
width: 100px;
height: 100px;
background: orange;
margin: 10px;
float: left;
}
-->
</style>
<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("jquery", "1.3.2");</script>
<script type="text/javascript">
$('document').ready(function() {
$('.resizebutton').toggle( function() { $(this).parent().animate({width: '+=50px', height: '+=50px'}, 1000); },
function() { $(this).parent().animate({width: '-=50px', height: '-=50px'}, 1000); });
$('.fadebutton').click(function() {
var $theBox = $(this).parent();
$theBox.siblings().fadeOut(1000, function() { $theBox.find('.resizebutton').click(); });
});
});
</script>
</head>
<body>
<div>
<div class='box'><div class='fadebutton'>Fade</div><div class='resizebutton'>Resize</div></div>
<div class='box'><div class='fadebutton'>Fade</div><div class='resizebutton'>Resize</div></div>
<div class='box'><div class='fadebutton'>Fade</div><div class='resizebutton'>Resize</div></div>
<div class='box'><div class='fadebutton'>Fade</div><div class='resizebutton'>Resize</div></div>
<div class='box'><div class='fadebutton'>Fade</div><div class='resizebutton'>Resize</div></div>
</div>
<div>
<div style="clear: both; padding: 0 0 10px 0; ">Clicking the 'resize' button triggers a toggle that increase or decreases the box's size.</div>
<div>Clicking on the 'fade' button fades the box's siblings, then triggers the 'resize' button in that box. Trouble is that the 'resize' gets fired as many times as there are siblings.</div>
</div>
</body>
</html>
$.animate()
për të shtuar një flamur për të luajtur një herë, ndoshta do ta zbatoja në një mënyrë të ngjashme. 11.11.2009