去抖功能意味着鼠标轮上的e.preventDefault不再有效

时间:2016-08-30 22:19:14

标签: javascript debouncing

我正在使用鼠标滚轮查看页面的背景。我只想在1000ms时触发鼠标滚轮事件,所以我正在使用去抖功能。

在我添加去抖功能并使用e.preventDefault()之前,它阻止了滚动工作。但是,现在我已经添加了去抖功能,这不再有效,用户可以再次滚动页面。

请参阅以下代码。

$(document).ready(function() {
    $(document).on('mousewheel DOMMouseScroll',debounce(function(e){
        e.preventDefault();
        //code to change the background image
    }, 1000))
});

function debounce(fn, delay) {
  var timer = null;
  return function () {
    var context = this, args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function () {
      fn.apply(context, args);
    }, delay);
  };

1 个答案:

答案 0 :(得分:1)

然后像这样构建:

$(document).ready(function() {
    var changeBackground = debounce(function(e){
        //code to change the background image
    }, 1000)
    $(document).on('mousewheel DOMMouseScroll',debounce(function(e){
        e.preventDefault();
        changeBackground(e);
    })
});