jquery scrollTop slideDown无法停止重复

时间:2014-12-18 09:50:47

标签: jquery css slidedown

我在stackoverflow上搜索过很多帖子,但没找到我的解决方案。

向下滚动200px后,我想调出一个菜单栏,没问题。 我希望它以slideDown显示。

问题是,在向下滚动200px后,每次我再次向下滚动时,slideDown()会再次滑动,我只会在第一次超过200px时将其拖动到slideDown。

这是我的jQuery代码:

var lastScrollTop = 0;
delta = 5;
$(window).scroll(function(event){
  var st = $(this).scrollTop();
  if(Math.abs(lastScrollTop - st) <= delta)
      return;

  //initialisation div caché :
  $('#menu-container-mini').css("display", "none");

  if (st > lastScrollTop){
    // scrolling down :
    console.log('scroll down'+st);
    if(st>200){
      // Scrolling down après 150px
      console.log('scroll down st>150 : '+st);

      // This condition isn't respected
      // Each time I scroll down, the slideDown starts again :


      if($('#menu-container-mini').css('display')=='none')
      {
        $('#menu-container-mini').slideDown('slow').css("display", "block");
      }

    }
  }
  lastScrollTop = st;
});

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果您只想做一次,可以创建一个布尔值并将其初始设置为false。然后,滚动超过200像素后,检查变量是否为假,如果是,请调用slideDown(),然后将变量设置为true。

然后,如果你想要,你可以在向上滚动

后将变量设置为false

*编辑:我发现错误,每次滚动你都在调用

//initialisation div caché :
 $('#menu-container-mini').css("display", "none");

这就是你弹出窗口消失的原因。将该行移到$(窗口).scroll函数

上方