Javascript 如何检测用户何时主动滚动?

Javascript 如何检测用户何时主动滚动?,javascript,jquery,scroll,jquery-events,Javascript,Jquery,Scroll,Jquery Events,我的页面有一个可滚动的区域,其中包含许多元素。当鼠标悬停在上面时,每个元素都会触发一个函数 我的问题是,如果用户用鼠标滚轮向上或向下滚动,当区域从下方滚动时,该函数会触发光标经过的每个元素 是否有一种方法,只有在用户没有主动滚动的情况下,我才能使函数触发器处于悬停状态 jQuery的内置.scroll()似乎不是我需要的,因为只有在滚动启动时才会触发滚动事件。我需要知道卷轴是否正在进行中 更新:这是我当前的代码: $container.find('div.item').each(functio

我的页面有一个可滚动的区域,其中包含许多元素。当鼠标悬停在上面时,每个元素都会触发一个函数

我的问题是,如果用户用鼠标滚轮向上或向下滚动,当区域从下方滚动时,该函数会触发光标经过的每个元素

是否有一种方法,只有在用户没有主动滚动的情况下,我才能使函数触发器处于悬停状态

jQuery的内置
.scroll()
似乎不是我需要的,因为只有在滚动启动时才会触发滚动事件。我需要知道卷轴是否正在进行中


更新:这是我当前的代码:

$container.find('div.item').each(function(i, e){
     $(e).hover(
          function(){
               $(this).toggleClass('expanded');
               // other functions here
          },
          function(){
               $(this).toggleClass('expanded');
          }
     );
});

因此,如果用户当前正在滚动页面,我要做的是禁用
.hover()
中的所有内容。

我将使用
设置超时
,在
鼠标指针
上有一个公平的时间,然后在
鼠标移动
上使用
清除超时
,这将在悬停时产生一个小的延迟,因此,只有当用户在设置的时间内将鼠标停留在元素上时,才会触发悬停

这将希望最小化您的滚动问题。也许有比这更好的解决办法,但这是我想到的第一件事

编辑

快速编写此示例,应该可以正常工作:

$(function() {
    "use strict";
    var $container = $("#container"),
        timeout, self;

    $container.find("div").each(function() {
        $(this).hover(
            function() {
                self = this;
                timeout = setTimeout(function() {
                    $(self).css({
                        width : 500,
                        height: 500
                    });
                }, 500);
            },
            function() {
                clearTimeout(timeout);
                $(this).css({
                    width : 300,
                    height: 300
                });
            }
        );
    });
});
要进行演示,请转到此小提琴:

这取决于你想延迟多久,我用了500毫秒

注意


不需要
.each()
,您可以立即调用
div
集合上的
.hover()
。我包括了
.each()
,因为我不知道您是否想做的不仅仅是绑定悬停事件。

这能与jQuery的
.hover()一起工作吗?查看我问题的更新。@daGUY当然可以,查看我更新的帖子。只需在代码中实现它。这与我的代码不兼容-可能与
有关。each()
?延迟之后,我得到的不是类切换,而是:
TypeError:“null”不是对象(计算'c.top')
。这里有一个小问题:在我将元素移出后,类才切换。我哪里出错了?@daGUY又更新了我的帖子,再看一遍。我马上检查你的小提琴。我们可以在触摸屏上做吗?