如何使用jquery不断检查滚动条的高度何时发生变化

时间:2013-08-13 18:18:32

标签: javascript jquery animation

我想在用户更改滚动条的高度时检测到。现在我已经检测到一次脚本(当用户向下移动滚动条时),但当你再次移动滚动条时没有任何反应。我的逻辑是,当用户将滚动条移动到大于296的位置时,会出现使用animate()的div,这是有效的。但是当用户将滚动条移动到小于296的位置时,div应该使用animate()消失。我的代码如下。有人可以帮忙吗?非常感谢。

$(window).scroll(function(){
  var wintop = $(window).scrollTop();
  var docheight = $(document).height();
  var winheight = $(window).height();

  var newWidthGrow = 500;
  var smallHeight = 0;
  var smallWidth = 0;


  if(wintop > 296) 
  {

    $("#slidebottom").animate({height:docheight +"px", width:newWidthGrow + "px"},'fast');          
  }

  if(wintop < 296)
  { 
    $("#slidebottom").animate({height:smallheight +"px", width:smallWidth + "px"}, 'fast');
  }
});

1 个答案:

答案 0 :(得分:1)

这里有两个问题:

您启动名为smallHeight的变量但使用smallheight,这会导致错误。

你应该在运行另一个动画之前添加.stop() - 方法:

$("#slidebottom").stop().animate();

你应该考虑只运行一次动画,而不是任何时候触发scroll事件。布尔值在这里很有帮助:

if(wintop < 296 && expanded) {
    expanded = false;
    $("#slidebottom").stop().animate();
}

<强>演示

Try before buy