从当前位置滚动一定数量(向上或向下)后如何触发事件?

时间:2016-12-31 01:39:23

标签: jquery

我还没有找到解决我具体问题的方法。我的主菜单在点击时切换打开和关闭。我希望在用户从 当前 位置向上或向下滚动100px后,可选择关闭菜单。我需要从当前窗口位置计算+或 - 100px。场景:用户向下滚动页面的1/3并打开菜单,然后决定不点击任何内容,但继续向上或向下滚动页面。用户滚动100px后菜单应自动关闭。目前,菜单会在滚动时立即关闭,这很容易错误地完成。

  $(window).on('scroll', function () {
  if ($('.nav--column').is(':visible') && **user has scrolled +- 100px**) {
    $('.nav--main-menu').find('a.level_one.current').removeClass('current');
    $('.nav--column').removeClass('expanded');
  }
});

1 个答案:

答案 0 :(得分:0)

当用户点击打开菜单时,您可以存储当前的scrollTop

var LAST_SCROLL = $(window).scrollTop();

在您的代码中:

$(window).on('scroll', function () {
   if ($('.nav--column').is(':visible') && Math.abs(LAST_SCROLL - $(window).scrollTop()) > 100) {
   $('.nav--main-menu').find('a.level_one.current').removeClass('current');
$('.nav--column').removeClass('expanded');
    }
});