2011-08-17 72 views
0

我正在使用.fadeIn和.fadeOut,并可以得到一次发生的效果,问题是让它发生每次链接被淹没。我已经试过在.deQueue()和.stop()中无效。 (这里福利局,所以请耐心等待,彻底在你的解释 - 多少是仍然在我的头上)jQuery效果去了一次,但我需要它重复发生

<!DOCTYPE html> 
<html> 
<head> 

<style> 
p { position:relative; width:400px; height:90px; } 
div { 
position:fixed; 
padding-top:25px; 
top:300px; 
left:300px; 
display:none; 
} 
span { display:none; } 
</style> 

<script type="text/javascript" src="jQuery.js"></script> 

</head> 

<body> 

<a href="#">MouseOver!</a> 

<h3><div><span>Sample Text</span></div></h3> 

<script> 
$("a").mouseover(function() { 
$("div").fadeIn(0, function() { 
$("span").fadeIn(3000); 
}); 
return false; 
}); 

$("a").mouseout(function() { 
$("h3").fadeOut(3000); 
}); 

</script> 

</div> 
</body> 
</html> 

回答

1

这是你的选择。你淡入淡出,但淡出h3。因此,含H3将永远不会褪去了。

你需要

$("span").fadeIn(3000); 
... 
$("span").fadeOut(3000); 
+0

约瑟夫!我的男人!你钉了它。非常感谢。 – Scott

+0

不客气。我很高兴能够帮助:) –

+0

是否有一个快速解决方案来阻止它脉动?上面的例子没有这样做,但当我把它放在页面中时,我得到了这种不希望的效果。 – Scott

1

那是因为你正在衰落的那些元素,但mouseout不改变它们的可见状态。您可以将hover事件与单个函数一起使用以实现所需的行为。

$("a").hover(function() { 
    $("div").fadeToggle(3000); 
    return false; 
}); 
+0

谢谢,但这并不适合我。我尝试过.hover,但是我在firefox中工作,并且保留单独的功能(.mouseover和.mouseout)以获得更好的运行效果。有什么我可以添加到我现有的代码,将解决这个问题? – Scott

+0

@Scott - 事件处理程序需要绑定在'$(document).ready(' – karim79

+0

)有人可以解释倒票吗? – karim79

1

看起来像你是衰落div和跨度两个。如果你正在消失任何元素,那么子元素也会消失。试试这个

$("a").mouseover(function() { 

    $("div").fadeIn(3000); 
    return false; 

}).mouseout(function() { 
    $("div").fadeOut(3000); 
}); 
+0

错了,h3会淡出,但div会淡入.h3仍然隐藏,所以元素不会显示。 -1代表错误的答案。 –

+0

@Rikido - 谢谢,我更正了。现在投票应该现在去:) – ShankarSangoli

0

当然好了,只运行一次,你在div和跨褪色,但你淡出H3。你的标记也没有意义。考虑这个改进:http://jsfiddle.net/RikudoSennin/gRAGe/

它包含jQuery和HTML改进。请过去,并考虑使用这个更好的例子。

0

它是因为你正在淡出父元素h3你无法淡入其他人隐藏的时候。你的div,也开始隐藏,迫使你显示它,以淡入跨度。老实说,我只是把你的标记改为更简单的东西,或者至少删除一层隐藏的元素。

如果您从css中的div中删除dispay : none,下面将会有效。

Live Demo

$("a").hover(function(){ 
     $("span").fadeIn(300); 
},function(){ 
     $("span").fadeOut(300); 
}); 

而且它更容易使用hover,因为你就可以控制在一个方法会发生什么。

相关问题