2012-11-27 91 views
1

网站使用这个做了一个“黑色的不透明性”过滤器:奇怪jQuery的动画行为

/* Body black hover */ 
    $(document).ready(function() { 
     $("#bg_hover").stop(); 
     $("#bg_hover").animate({ opacity: 0.5 }, 1000); 
     $("body").hover(function() { 
      $("#bg_hover").stop(); 
      $("#bg_hover").animate({ opacity: 0.5 }, 1000); 
     }, function() { 
      $("#bg_hover").stop(); 
      $("#bg_hover").animate({ opacity: 0 }, 1000); 
     }); 
    }); 

我的问题是,我想,当用户进入到“SOBRE NOSALTRES”做一个小动画(点击上一级菜单进入该页面)。你可以看到它的动画“很好”,但根本没有,有时如果你去“产品”并回到“SOBRE NOSALTRES”,动画会被卡住在98%的宽度。这有点奇怪,为什么会发生?

这是错误的截图: http://webkunst.comeze.com/test/3.png

,这是我使用,使NOSALTRES网页上的动画脚本:

<script> 
     $(document).ready(function() { 
      $("#bg_hover").stop(); 
      $("#bg_hover").animate({ width: '80%', opacity: 0.9, left: '10%', right: '10%' }, 800); 
      $('li#nosaltres').addClass('active') 
     }); 
     $("body").hover(function() { 
      $("#bg_hover").stop(); 
      $("#bg_hover").animate({ opacity: 0.9 }, 500); 
     }, function() { 
      $("#bg_hover").stop(); 
      $("#bg_hover").animate({ opacity: 0 }, 500); 
     }); 
    </script> 
+0

你为什么把它标记为AJAX? – LorDex

+0

我删除了国旗 – codek

回答

1

出现的问题,当你<body>因为你在$("body").hover(function() {});第一线停靠所有动画,包括在减少宽度80%动画调用$("#bg_hover").stop();悬停PRODUCTES页面加载。

我可以通过点击SOBRE NOSALTRES来重现问题,然后将鼠标快速移入和移出浏览器窗口。

我不会将悬停效果添加到<body>,直到初始调整大小到80%完成为止,例如通过在动画完成后添加一个匿名函数来调用。

$("#bg_hover").stop().animate({ width: '80%', opacity: 0.9, left: '10%', right: '10%' }, 800, function() { 
    $('li#nosaltres').addClass('active'); 

    $("body").hover(function() { 
     $("#bg_hover").stop().animate({ opacity: 0.9 }, 500); 
    }, function() { 
     $("#bg_hover").stop().animate({ opacity: 0 }, 500); 
    }); 
}); 
+1

这个修好了,谢谢! – codek

0

不要把它分成两行:\

$("#bg_hover").stop(); 
$("#bg_hover").animate({ width: '80%', opacity: 0.9, left: '10%', right: '10%' }, 800); 

相反,使用:

$("#bg_hover").stop().animate({ width: '80%', opacity: 0.9, left: '10%', right: '10%' }, 800);