我的网页顶部有一个 Position Fixed Nav。 Nav 还有一个下拉菜单,它会向下滑动并保持向下直到再次单击它。

我想要实现的是,如果子菜单打开,并且用户决定向下滚动页面,子菜单将自动关闭。

我目前拥有的是:

$(document).scroll(function() {

$(".subMenu").slideUp(300);

 });

但是这种方法非常敏感,只需轻轻滚动即可关闭下拉菜单。

理想情况下,我可以在向上或向下滚动 300 像素后将菜单滑动备份,以便有某种“缓冲”空间。

最佳答案

您可以使用 jquery 的 $(window).scrollTop() 来确定当前位置。我创建了一个 simple example 来演示它。

var lastFixPos = 0;
var threshold = 200;

$(window).on('scroll', function(){
  var diff = Math.abs($(window).scrollTop() - lastFixPos);
  if(diff > threshold){
    alert('Do something');
    lastFixPos = $(window).scrollTop();
  }
});

您可以在采取行动之前更改 threshold 以增加/减少灵敏度。

关于JQuery .scroll - 如何检索向下或向上滚动页面的距离?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16700193/

10-12 13:34