去抖动阻止SlideToggle

时间:2015-06-28 14:46:12

标签: javascript jquery slidetoggle

我有一个我要滚动的子菜单。 有一个功能需要去抖,否则一切 滞后。由于某种原因,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;
        }
    });
});

0 个答案:

没有答案