我在滚动时触发点击事件,以便折叠并展开页面顶部的标题菜单。我已经为我的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毫秒的延迟吗?