[問題] 請問這樣寫 jQuery 為何出錯 附原始碼

看板Ajax作者 (Aone)時間14年前 (2012/04/27 16:01), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串1/1
小弟在試作一個簡單的廣告輪播動態效果 問題點有用前景色 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

04/27 16:09, , 1F
後在紅色的地方是跟animate同時啟動
04/27 16:09, 1F

04/27 16:10, , 2F
放在animate的callback會在animate動完之後才開始計時
04/27 16:10, 2F

04/27 16:11, , 3F
簡單的說 animate是非阻塞非同步的 不會等動完之後才
04/27 16:11, 3F

04/27 16:11, , 4F
執行之後的程式碼 跟ajax一樣
04/27 16:11, 4F

04/27 16:43, , 5F
我記得animate有一個option就是設定animate完之後要做的事
04/27 16:43, 5F

04/27 16:44, , 6F
上jQuery官網查一下就有了~~
04/27 16:44, 6F

04/27 19:12, , 7F
謝謝 原來是會同時啟動的關係 @@
04/27 19:12, 7F
文章代碼(AID): #1Fcb93K0 (Ajax)
文章代碼(AID): #1Fcb93K0 (Ajax)