-2

我想检测用户何时更改滚动条的高度。现在脚本我检测到它一次(当用户向下移动滚动条时)但是当你再次移动滚动条时没有任何反应。我的逻辑是,当用户将滚动条移动到大于 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');
  }
});
4

1 回答 1

1

这里有两个问题:

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

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

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

您应该考虑只运行每个动画一次,而不是在任何时候触发滚动事件。布尔值在这里会有所帮助:

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

演示

先试后买

于 2013-08-13T18:27:29.560 回答