【问题标题】:Bind scroll to on click event将滚动绑定到单击事件
【发布时间】:2015-06-05 12:55:27
【问题描述】:

我的页面上有一个downArrowupArrow 按钮来控制滚动。

当滚动到页面底部时,向下箭头消失; 向上箭头在滚动到顶部时消失。一切都很完美。

问题:

如何将鼠标滚轮滚动绑定到我的click 函数?因此,如果用户使用鼠标滚轮滚动,箭头会相应地消失。

$('#downArrow').on('click', function () { //how to bind mouse scroll?
    //scroll down
});

【问题讨论】:

  • @freedomn-m:谢谢。我只希望能够检测鼠标滚轮滚动以及单击功能,因为我将在滚动到 div 时实现这一点。

标签: javascript jquery scroll onclick


【解决方案1】:

您可以检查网站的滚动并根据滚动值触发downArrowupArrow按钮的click事件。这将起作用。

查看网站滚动条:

// We get the $(document) —or $(window)—, because we want to check the scroll of the website. 
var $body = $(document), oldScrollValue = 0;

$body.on('scroll', function() {

    if ($body.scrollTop() > oldScrollValue ) {
          $('#downArrow').trigger('click');
    }else{
          $('#upArrow').trigger('click');
    }

    oldScrollValue = $body.scrollTop();

});

JSFiddle: http://jsfiddle.net/tomloprod/has67o9r/


检查元素的滚动:

// We get the `$("#divID")`, because we want to check the scroll of this element. 
var $element = $("#divID"), oldScrollValue = 0;

$element.on('scroll', function() {

    if ($element.scrollTop() > oldScrollValue ) {
          $('#downArrow').trigger('click');
    }else{
          $('#upArrow').trigger('click');
    }

    oldScrollValue = $element.scrollTop();

});

记得添加一些CSS这样的代码,否则滚动将是文档的:

#divID{
   overflow:scroll;
   height:200px;
}

JSFiddle: http://jsfiddle.net/tomloprod/has67o9r/1/


声明:

我喜欢在包含对象 JQuery 的变量名称前添加一个“$”;所以我可以很容易地与对象 DOM 区分开来。

【讨论】:

  • 你能简单地解释一下这个$body.bind('scroll', function() {吗?为什么是 $body ? .bind 也将很快贬值,所以我可以用 .on 替换它吗?
  • 为什么要触发点击而不是仅仅移除页面上的箭头
  • @Adelphia 因为如果用户中途使用鼠标然后继续使用箭头,它仍然可以工作。这就是原因。
  • 谢谢。如果我想检测特定 div(而不是 $body)上的滚动,我可以将 $body 替换为 $('#divID') 吗?
  • 是的,一切都会完美运行:但是记住添加一些 CSS 类,如下所示:#divID{ overflow:scroll; height:200px; } 否则滚动将是文档的
猜你喜欢
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 2012-03-10
相关资源
最近更新 更多