0

我有一个使用 jquery ui 滑块插件构建的垂直滑块。

当鼠标悬停在滑块上时,我希望能够用鼠标滚轮上下滚动滑块。

由于滑块不是可滚动的对象,它不响应该.scroll方法。

通过在窗口滚动时检查鼠标是否在滑块上,我找到了一种解决方法。通过使用这种方法,我有两个问题:

1-即使我使用event.preventDefault()窗口仍然滚动......

2-如果窗口一直向上滚动,即使它不在第一个位置,滑块也不能再向上滚动。

var lastScrollTop = 0;
$(window).scroll(function (e) {
    if (mouseSlider) {
        e.preventDefault(); //Doesn't stop window from scrolling
        var st = $(this).scrollTop();
        if (st > lastScrollTop) {
            $('#next-day').click();
        } else {
            $('#prev-day').click();
        }
        lastScrollTop = st;
        return false;
    }
});

这是示例:http: //jsfiddle.net/4xCyk/1/

为什么event.preventDefault()运行正常?即使滚动条是顶部,有没有办法启用滚动?

或者有更简单的方法吗?

4

2 回答 2

2

我终于使用 Jquery 插件解决了这个问题: https ://github.com/brandonaaron/jquery-mousewheel

$('#slider').mousewheel(function(event, delta) {
    if (delta > 0)
        $('#prev-day').click();
    else
        $('#next-day').click();
    event.stopPropagation();
    event.preventDefault();
});
于 2013-10-07T19:43:41.980 回答
0

回答“1-即使我使用 event.preventDefault() 窗口仍然滚动......”

因为您声明mouseSlidervar mouseSliderwhich 创建了一个局部变量而不是全局变量以在不同的函数中使用

看到这个:http: //jsfiddle.net/4xCyk/9/

于 2013-10-03T20:23:54.657 回答