Javascript:只在向上滚动时才能延迟滚动事件?

时间:2018-03-15 03:42:13

标签: javascript jquery scroll delay

我在滚动时触发点击事件,以便折叠并展开页面顶部的标题菜单。我已经为我的js添加了限制,以消除由于多余事件发生而导致的故障。

这是我目前的JS:

<script>
jQuery(window).scroll(function() {
   var hT = jQuery('.closemenu').offset().top,
       hH = jQuery('.closemenu').outerHeight(),
       wH = jQuery(window).height(),
       wS = jQuery(this).scrollTop();
    console.log((hT-wH) , wS);
   if (wS > (hT+hH-wH) && (hT > wS) && (wS+wH > hT+hH)){
   jQuery('.menu-bar').trigger('click');
   }

function throttle(fn, threshhold, scope) {
  threshhold || (threshhold = 1250);
  var last,
      deferTimer;
  return function () {
    var context = scope || this;

    var now = +new Date,
        args = arguments;
    if (last && now < last + threshhold) {
      // hold on to it
      clearTimeout(deferTimer);
      deferTimer = setTimeout(function () {
        last = now;
        fn.apply(context, args);
      }, threshhold);
    } else {
      last = now;
      fn.apply(context, args);
    }
  };
}

});
</script>

现在我已经意识到我需要添加另一个参数,以便将事件延迟1000毫秒而非仅向上滚动。这是因为当事件触发时,标题菜单容器没有展开,因此仅在向上滚动时存在毛刺。

任何人都可以推荐正确的功能,只捕获向上滚动动作并在事件(jQuery('.menu-bar').trigger('click');)触发前应用1000毫秒的延迟吗?

0 个答案:

没有答案