2017-09-26 41 views
3

當div向左滾動時,我會添加什麼代碼來觸發代碼塊?檢測左滾動JavaScript

<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> 

到目前爲止,我曾嘗試以下無濟於事:

var isleft = e.delta < 0; 
if isleft = true { do something } 

回答

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; 
}); 

應該與所有的瀏覽器。如果您需要檢測水平方向,用wheelDeltaY

取代wheelDeltaX如果您要檢測的滾動方向,並讓頁面滾動,return true

2

如前所述here 您可以通過處理水平滾動:

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

在這種情況下,這個綁定所有種類在這個元素上的滾動事件,所以你也可以處理

立式通過e.currentTarget.scrollTop

水平由e.currentTarget.scrollLeft

+0

它也應該工作,但只有當網頁確實是滾動 –