作者Aone (Aone)
看板Ajax
標題[問題] 請問這樣寫 jQuery 為何出錯 附原始碼
時間Fri Apr 27 16:01:04 2012
小弟在試作一個簡單的廣告輪播動態效果
問題點有用前景色 highlight
html 如下:
<div id="block">
<ul>
<li><a href="#"><img src="image/j.jpg" /></a></li>
<li><a href="#"><img src="image/q.jpg" /></a></li>
<li><a href="#"><img src="image/u.jpg" /></a></li>
<li><a href="#"><img src="image/e.jpg" /></a></li>
<li><a href="#"><img src="image/r.jpg" /></a></li>
<li><a href="#"><img src="image/y.jpg" /></a></li>
</ul>
</div>
jQuery 如下:
$(function(){
var $block = $('#block'),
$ul = $block.find('ul'),
_liHtml = $ul.html(),
_width = $block.width(),
_animateSpeed = 1000,
timer, speed = 400,
_index = 0,
_hover = false;
$ul.html( _liHtml + _liHtml );
var $li = $ul.find('li');
timer = setTimeout(move, speed);
function move(){
_index = (_index + 1) % $li.length;
$ul.animate({
left: _index * _width * -1
}, _animateSpeed, function(){
if(_index == $li.length / 2){
$ul.css('left', 0);
_index = 0;
}
※
});
timer = setTimeout(move, speed);
}
});
請問紅色那行計時器為何不能放在他現在的地方
而必須放在 if 條件式後面
※ 處
不是都是一樣執行完 animate 之後才再次啟動 move 嗎?
謝謝指教 :)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.224.53.223
1F:推 mrbigmouth:後在紅色的地方是跟animate同時啟動 04/27 16:09
2F:→ mrbigmouth:放在animate的callback會在animate動完之後才開始計時 04/27 16:10
3F:→ mrbigmouth:簡單的說 animate是非阻塞非同步的 不會等動完之後才 04/27 16:11
4F:→ mrbigmouth:執行之後的程式碼 跟ajax一樣 04/27 16:11
5F:推 saluyi:我記得animate有一個option就是設定animate完之後要做的事 04/27 16:43
6F:→ saluyi:上jQuery官網查一下就有了~~ 04/27 16:44
7F:→ Aone:謝謝 原來是會同時啟動的關係 @@ 04/27 19:12