2014-01-16 54 views
0

我试图在页面向下滚动时弹出的div上创建最小化效果。一切都很好,只是一个问题。如果最小化功能完成,并且向上滚动页面,它将恢复其原始值。我希望它在点击最小化按钮并向上滚动一点之后,应该保持最小化并且不会恢复。在jQuery中停止一个函数并运行另一个函数

这里是我使用

$(function() { 
    $(window).scroll(function() { 
     var height = $(window).height() /2; 
     if ($(this).scrollTop() >= height) { 
      $("#box").animate({'bottom':'0px'},300); 
     } 
     else { 
      $("#box").stop(true).animate({'bottom':'-150px'},100); 
     } 
}); }); 

$('.minimize').toggle(function() { 
    $('#box').animate({'bottom':'-80px'},200);}, 
    function() { $('#box').animate({'bottom':'0px'},200); 
}); 

检查演示fiddle

+2

添加一个开关/状态管理,与添加一个类来通知用户*有*点击如果属实最小化 - 不要动画。 – MackieeE

回答

1

我Machiee的评论表示赞同。

你可以这样来做:

$(function() { 
    $(window).scroll(function (e) { 
     if($('#box').hasClass('minimized')) 
      return; 
     var height = $(window).height() /2; 
     if ($(this).scrollTop() >= height) { 
      $("#box").animate({'bottom':'0px'},300); 
     } 
     else { 
      $("#box").stop(true).animate({'bottom':'-150px'},100); 
     } 
}); }); 

$('.minimize').toggle(function() { 
    $('#box').animate({'bottom':'-80px'},200); 
    $('#box').addClass('minimized'); 
}, 
    function() { $('#box').animate({'bottom':'0px'},200); 
       $('#box').removeClass('minimized'); 
}); 

检查演示fiddle

+0

我也在考虑'removeClass()',但代码与我之前所做的结构不匹配。这个工作正常。谢谢。 – SarmadK

相关问题