使用cookie取消jquery动画时出现问题

时间:2011-01-31 21:42:48

标签: jquery jquery-plugins jquery-cookie

我想在每个会话中使用cookie运行一次jquery动画。我有点想通过Klaus Hartl的cookie插件来解决这个问题,但是,当第二次调用页面时,元素会闪现。我的印象是$ .fx.off应该让jquery跳转到动画的结束状态,但是,元素会短暂闪现,它就像是跳转到最终状态,而只是通过动画播放真的很快当浏览器退出时,cookie将退出,然后动画将再次播放 - 这就是我想要发生的事情。我只想让动画每次播放一次。我可以在网上找到一些关于如何制作cookie切换CSS状态的好教程,但我想要的东西只会阻止jquery动画运行,以便最终状态可见。

这是我的测试页面:

http://ianmartinphotography.com/test-site/index-cookies-04.html

这是我的代码:

<script type="text/javascript">
var welcome=$.cookie('welcome'); if(welcome == 'ran') {$.fx.off = !$.fx.off;}; 
</script>


<!--slider-->
<script type="text/javascript">
$(window).load(function(){$(".imwpj")
.animate({"top": "+=200px"}, 0)
.fadeIn(2000).delay(200).animate({"top": "+=295px"}, 1100, function() {
$('#sub-fader').fadeIn(1500); });
$.cookie('welcome', 'ran');
}); 
</script>

任何想法都会很棒!谢谢!

1 个答案:

答案 0 :(得分:2)

var welcome=$.cookie('welcome'); 
 $(window).load(function(){
  if(welcome != 'ran') {
     $(".imwpj")
     .animate({"top": "+=200px"}, 0) // this is not necessary, you can use css("top", "200px")
     .fadeIn(2000).delay(200).animate({"top": "+=295px"}, 1100, function() {
     $('#sub-fader').fadeIn(1500); });
     $.cookie('welcome', 'ran');
  } else {
     $(".imwpj").css("top", "495px");
     $("#sub-fader").css("display", "block");  //or .show();
  }
 });

为什么不喜欢这个?