2013-07-11 60 views
0

我有一個延遲()和隱藏()多個元素的問題。jQuery延遲和fadeout有時不工作

比方說,我有這樣的事情:

<div id="one"> 
<p id="label1_one">text</p> 
<p id="label2_one">text</p> 
</div> 

<div id="two"> 
<p id="label1_two">text</p> 
<p id="label2_two">text</p> 
</div> 

<div id="three"> 
<p id="label1_three">text</p> 
<p id="label2_three">text</p> 
</div> 

和腳本

function toogle(){ 
if (1){ 
$("#one").css("display", "inline-block"); 
$("#label1_two").css("display", "inline-block").delay(10000).fadeOut(1000); 
$("#label2_two").css("display", "inline-block").delay(10000).fadeOut(1000); 
$("#label1_three").css("display", "inline-block").delay(10000).fadeOut(1000); 
$("#label2_three").css("display", "inline-block").delay(10000).fadeOut(1000); 
} 
if (2){ 
$("#two").css("display", "inline-block"); 
$("#label1_one").css("display", "inline-block").delay(10000).fadeOut(1000); 
$("#label2_one").css("display", "inline-block").delay(10000).fadeOut(1000); 
$("#label1_three").css("display", "inline-block").delay(10000).fadeOut(1000); 
$("#label2_three").css("display", "inline-block").delay(10000).fadeOut(1000); 
} 
if (3){ 
$("#three").css("display", "inline-block"); 
$("#label1_one").css("display", "inline-block").delay(10000).fadeOut(1000); 
$("#label2_one").css("display", "inline-block").delay(10000).fadeOut(1000); 
$("#label1_two").css("display", "inline-block").delay(10000).fadeOut(1000); 
$("#label2_two").css("display", "inline-block").delay(10000).fadeOut(1000); 
} 
} 

每次頁面上的一些元素保持可見。 有沒有一些這個已知的問題。

或者有人可以指點我一些其他的解決方案。

Code is example from real situation. :) 

由於提前, 韋德蘭

+1

什麼'如果(1)'是什麼意思?在jsfiddle中提供一個非工作的例子,所以我們可以看到什麼是錯的。 – muratgu

+1

問題是什麼?我的意思是,除了if(1)',if(2)'和'if(3)'是無用的,因爲它們會一直執行。 – acdcjunior

+0

你是否試圖在同一時間完成它們,因爲這幾乎就是你在做什麼?我應該假設你想在每個ID之間延遲? – PHPglue

回答

1
if(1) 

意味着它會一直訪問您的if語句

如果你指的是div ID,在你的jQuery,你需要改變它的東西是這樣的:

$('#one').click(function(){ 
    //do something. 
}); 
+0

爲什麼downvote這個? –

+0

仔細檢查你的語法錯誤。 – Sparky

+0

@Sparky哦,我很抱歉。我愚蠢的錯誤。固定。 –

0

你可以嘗試使用.stop方法(http://api.jquery.com/stop/),如果發生錯誤,當您嘗試動畫已經動畫對象調用站開始前,將清除所有動畫

$("#label1_one").css("display", "inline-block").stop(true, true).delay(10000).fadeOut(1000); 
+0

「文本發言」在SO中不受歡迎。請更正拼寫。謝謝。 – Sparky