jquery - jQuery 中的鼠标滚轮问题

标签 jquery

我在 head 部分有以下代码:

<script type='text/javascript' src='/js/jquery.mousewheel.min.js'></script>

jQuery(function($) {
    $('#box').bind('mousewheel', function(event, delta) {
        var dir = delta > 0 ? 'Up' : 'Down',
        vel = Math.abs(delta);
        alert(dir + ' at a velocity of ' + vel);
        return false;
    });
});

在 Firefox 5 中什么也没有发生。在 Chrome 13 和 IE 9 中,无论我向哪个方向滚动,我都会得到“以 NaN 速度向下”。

我该如何解决这个问题?我想做的是检查用户是否向上滚动,或者向下滚动。

感谢您的帮助!

最佳答案

无法使用新的 jQuery 2.0.1...好吧,它可以工作,但不符合预期。此代码仅检测向下运动(这意味着负增量)。我已经尝试过这段代码,但结果始终是否定的:

var num = 0;

$('#container').bind('mousewheel DOMMouseScroll',function(e, delta) {
    if(delta > 0) {
        $("#output").text(++num);
    } else {
        $("#output").text(--num);
    }

    e.stopPropagation();
    e.preventDefault();
});

DOMMouseScrollmousewheel 相同,但适用于 Firefox。

更正

我在这个 post 中找到了这个新代码现在它可以在 Chrome 和 Firefox 中使用 jQuery 2.0.1 工作(我已经修复了它)。问题是返回的 delta 值未定义。

function extractDelta(e) {
    if (e.wheelDelta) {
        return e.wheelDelta;
    }

    if (e.originalEvent.detail) {
        return e.originalEvent.detail * -40;
    }

    if (e.originalEvent && e.originalEvent.wheelDelta) {
        return e.originalEvent.wheelDelta;
    }
}

var num = 0;

$('#container').bind('mousewheel DOMMouseScroll',function(e) {
    var d = extractDelta(e);

    if(d > 0) {
        $("#output").text(++num);
    } else {
        $("#output").text(--num);
    }

    e.stopPropagation();
    e.preventDefault();
});

Containeroutput 只是两个空 div。

关于jquery - jQuery 中的鼠标滚轮问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7022852/

相关文章:

javascript - 具有相同类的嵌套元素

javascript - 在按下另一个输入字段的按键时触发输入字段的按键事件?

javascript - 从标签返回文本,其中最外层 HTML 标签适用于 jquery 中的所有文本节点

javascript - 无法弄清楚如何根据日期自动显示文本内容

带有对象选择器的 jQuery 委托(delegate)

javascript - 简化随机顺序的 jQuery 函数

javascript - 模块 'datatables' 不可用!您要么拼错了模块名称,要么忘记加载它

jquery - 子网格缓存或阻止子网格数据被删除 (jqGrid)

javascript - 完全相同的脚本在一页上有效,但在另一页上无效

jquery - 根据索引为每个子 div 添加类