我有一个我要滚动的子菜单。 有一个功能需要去抖,否则一切 滞后。由于某种原因,debounce功能阻止了slideToggle 需要立即回应。去抖动的setTimeOut会导致这个吗? 我在滚动和debounce上尝试了jquery off函数但是没有工作。 这是代码的滚动子菜单:
function sidebarFollow() {
...
var boldHeaderLinks = function() {
...
}
//header links take to long to calculate we need to debounce
$(window).scroll(debounce(boldHeaderLinks, 300, false));
}
以下是来自underscore.js的辩论:
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
点击我希望能够切换子菜单:
$(".submenu-btn").on("click", function(e) {
e.preventDefault();
var $self = $(this),
submenu = $(this).attr("href");
$self.toggleClass("active");
$(submenu).slideToggle(250, function() {
// only run if there's a sidebar on the page
if ($(".panel-left").length) {
// adjust sidebar after sidebar height has changed
hasSlideToggle = true;
sidebarFollow();
hasSlideToggle = false;
}
});
});