0

jquery ui スライダー プラグインを使用して垂直スライダーを作成しました。

マウスがスライダーの上にあるときに、マウスホイールでスライダーを上下にスクロールできるようにしたいと思います。

スライダーはスクロール可能なオブジェクトではないため、.scrollメソッドに応答しません。

ウィンドウがスクロールするときにマウスがスライダーの上にあるかどうかを確認することで、回避策を見つけました。この方法を使用すると、次の 2 つの問題があります。

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 に答える