【发布时间】:2012-02-24 23:44:07
【问题描述】:
我有以下代码:
// Hide all divs that are not the default
$('div.apps-description > div').not('.default').hide();
// When an icon is hovered
$('ul.apps-links li a').hover(function() {
var liClass = $(this).parents('li').attr('class');
$('div.apps-description > div:visible').fadeOut('fast', function() {
$('div.' + liClass).fadeIn('fast');
});
},function()
{
$('div.apps-description > div:visible').fadeOut('fast', function() {
$('div.apps-description > div.default').fadeIn('fast');
});
});
标记例如是:
<ul class="apps-links">
<li class="app-one"><a href="./">Test</a></li>
<li class="app-two"><a href="./">Test</a></li>
<li class="app-three"><a href="./">Test</a></li>
</ul>
<div class="apps-description">
<div class="default">Default Content</div>
<div class="app-one">Default Content</div>
<div class="app-two">Default Content</div>
<div class="app-three">Default Content</div>
</div>
这个想法是默认 div 在页面加载时显示,然后当您悬停一个项目时,它会根据其匹配的类淡出默认和链接的 div。这一切都很好,除非我在它再次正确淡出之前将鼠标悬停在另一个链接上,这将导致默认和新 div 都显示!
任何想法如何解决这个问题?我尝试使用.stop(),但这只会导致动画中断,因为它们在淡入淡出中停止并附加糟糕的不透明度值。
编辑:还注意到,如果我将鼠标悬停在所有链接上,它将导致所有 div 出现,但它们会自动修复自己。因此,淡入和淡出显然是一个问题,彼此之间的顺序不好。
【问题讨论】:
-
您是否尝试在淡入淡出功能之前使用
.stop(true, true);$('div').stop(true, true).fadeIn('fast');? -
这并不能解决问题,然后导致严重滞后。
标签: jquery