2013-07-11 61 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