2017-09-26 14 views

答えて

1

によってこのソリューションでは、DOMイベントを検出します。

$(window).on('DOMMouseScroll mousewheel', function (e) { 
    if(e.originalEvent.detail > 0 || e.originalEvent.wheelDeltaX < 0) { //alternative options for wheelData: wheelDeltaX & wheelDeltaY 
    //scroll right 
    console.log("RIGHT"); 
    } else { 
    //scroll left 
    console.log("LEFT"); 
    } 

    //prevent page fom scrolling 
    return false; 
}); 

それはすべてのブラウザで動作するはず:divがあなたがこのスニペットでスクロール方向を検出することができるはずいくつかのスクロールバー

を持っている必要はありません。あなたは、水平方向を検出する必要がある場合は、スクロール方向を検出し、また、動作するはずですが、ページが実際にスクロールしている場合にのみエンド

2

として、あなたは、水平スクロールを処理することができhere :この場合、このバインドすべての種類では

$("#someContainer").on("scroll", function (e) { 
    horizontal = e.currentTarget.scrollLeft; 
    vertical = e.currentTarget.scrollTop; 
}); 

<script> 
(function() { 
    function scrollH(e) { 
     e = window.event || e; 
     var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail))); 
     document.getElementById('myDiv').scrollLeft -= (delta * 40); 
     e.preventDefault(); 
    } 
    if (window.addEventListener) { 
     window.addEventListener("mousewheel", scrollH, false); 
     window.addEventListener("DOMMouseScroll", scrollH, false); 
    } else { 
     window.attachEvent("onmousewheel", scrollH); 
    } 
    if "scrollingLeft" { 
     // do something 
    } 
    else 
    { 
     // do something else 
    } 
})(); 
</script> 

は、これまでのところ私は無駄に次の試してみましたこの要素のスクロールイベントを処理できるように

垂直e.currentTarget.scrollTop

水平でe.currentTarget.scrollLeft

+0

でページスクロール、return trueをできるようにしたい場合は、wheelDeltaY

wheelDeltaXを置き換えます –

関連する問題