2013-02-24 47 views
0

我正在學校項目上工作,我需要你的幫助。我所做的是通過一套div的無限循環。有3個div和3個鏈接。 當我點擊這些鏈接時,應立即顯示正確的div(並顯示所有div後,再次循環)。問題是當我點擊時有一個延遲,我不想... 當我點擊鏈接時,是否有可能立即發出div?還有其他更簡單/更簡單的方法嗎?你能否改變/添加我需要的代碼?先謝謝你。立即顯示div div之間的適當div並再次循環

<ul id="cyclelist"> 
    <li><div>Div 1</div></li> 
    <li><div>Div 2</div></li> 
    <li><div>Div 3</div></li> 
</ul> 
</br></br> 
<a href="#" class="className1">link1</a><br/> 
<a href="#" class="className2">link2</a><br/> 
<a href="#" class="className3">link3</a><br/> 


var j=0; 
function changeOnClick() 
{ 

$("a").click(function(e) { 
    e.preventDefault(); 
    if ($(this).hasClass('className1')) { 
     j=-1; 
    } 
    else if ($(this).hasClass('className2')) { 
     j=0; 
    } 
    else if ($(this).hasClass('className3')) { 
     j=1; 
    } 
}); 
} 

var delay = 2000; 
function cycle(){ 
     var jmax = $("ul#cyclelist li").length -1; 
     changeOnClick(); 
     $("ul#cyclelist li:eq(" + j + ")") 
       .animate({"opacity" : "1"} ,400) 
       .animate({"opacity" : "1"}, delay) 
       .animate({"opacity" : "0"}, 400, function(){ 
         (j == jmax) ? j=0 : j++; 
         cycle(); 
       }); 
     }; 
cycle(); 
+1

你知道函數'.animate()'的第二個參數是什麼嗎? – FelipeAls 2013-02-24 11:25:37

+0

這是一個延遲 - 2秒後顯示下一個div。我希望這樣保持原樣。我只是不希望點擊鏈接 - 立即顯示div(沒有延遲)...並且再次正常循環(延遲)。如果你知道任何解決方案,請幫助。 – Phillip 2013-02-24 11:41:34

回答

0
.animate({"opacity" : "1"} ,400) 

動畫的第二個參數代表的速度,這就是爲什麼你得到延遲刪除

這是.animate

$(selector).animate({params},speed,callback); 

語法一旦通過它去。 http://www.w3schools.com/jquery/jquery_animate.asp

edit- 所以你的評論..我不知道天氣其正確的方式..更好地調用使用setTimeout()循環();

setTimeout(cycle,2000); 
+0

我希望延遲保持原樣。我只是不希望點擊鏈接 - 立即顯示div(沒有延遲)...並且再次正常循環(延遲)。 – Phillip 2013-02-24 12:17:57

+0

@Phillip我已經更新了我的答案看它.. – sasi 2013-02-25 05:06:17

0

嘗試從事件處理程序調用循環函數。 類似這樣的

if ($(this).hasClass('className1')) { 
    j=-1; 
    cycle(); 
} 

這應該可以解決您的問題。

+0

這不適合我。我之前不應該停止cycle()函數嗎? – Phillip 2013-02-24 12:00:49

+0

如果你願意,你可以阻止它,是的。只存儲對正在動畫的元素的引用,然後調用stop或jumptoend方法。看到這個:http://api.jquery.com/stop/ – adpmatos 2013-02-24 12:07:17