【问题标题】:disable scroll after each mousewheel event在每个鼠标滚轮事件后禁用滚动
【发布时间】:2016-06-29 16:37:21
【问题描述】:

我做了一个函数来增加一个 li 列表上的类, 有我的代码:

var scrollable = $('ul li').length - 1,
  count = 0;
$('body').bind('mousewheel', function(e) {
  if (e.originalEvent.wheelDelta / 120 > 0) {
    if (scrollable >= count && count > 0) {
      $('.active').removeClass('active').prev().addClass('active');
      count--
    } else {
      return false;
    }
  } else {
    if (scrollable > count) {
      $('.active').removeClass('active').next().addClass('active');
      count++
    } else {
      return false;
    }

  }
})
body{
  overflow:hidden;
  }

ul li {
  height: 20px;
  width: 20px;
  background: blue;
  margin: 5px;
  list-style: none
}
ul li.active {
  background: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul>
  <li class="active"></li>
  <li></li>
  <li></li>
  <li></li>
</ul>

但我想在班级的每次转换之间锁定滚动 1 秒,我该如何解决?

【问题讨论】:

  • 尝试将您的body 设置为overflow:hidden。您可能必须为整个站点提供一个容器,然后将容器设置为滚动高度,同时将您的主体设置为溢出隐藏。
  • 其实我的身体已经被溢出隐藏了,(对不起,我会修复它的例子)

标签: javascript jquery scroll mousewheel


【解决方案1】:

创建一个标志并使用 setTimeout 一秒钟

var scrollable = $('ul li').length - 1,
  count = 0,
  allowTransition = true;
$('body').bind('mousewheel', function(e) {

  if (allowTransition) {
    allowTransition=false;
    if (e.originalEvent.wheelDelta / 120 > 0) {
      if (scrollable >= count && count > 0) {
        $('.active').removeClass('active').prev().addClass('active');
        count--
      } else {
        return false;
      }
    } else {
      if (scrollable > count) {
        $('.active').removeClass('active').next().addClass('active');
        count++
      } else {
        return false;
      }

    }
    setTimeout(function() {
      allowTransition=true;
    }, 1000);
  }
})

【讨论】:

  • 感谢@Hoyen,但如果您比上一页多滚动一次,则返回时出现问题,它不适用于您的解决方案
  • @Tiaw 我的代码并没有阻止这一点。如果您在最后一项并尝试滚动到下一项,您的现有代码会阻止它执行任何操作。
  • 实际上我找不到如何通过您的解决方案来防止它,知道吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-14
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
相关资源
最近更新 更多