[英]Detect Left Scroll JavaScript
当div向左滚动时,我会添加什么代码来触发代码块?
<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 }
如前所述在这里您可以通过处理水平滚动:
$("#someContainer").on("scroll", function (e) {
horizontal = e.currentTarget.scrollLeft;
vertical = e.currentTarget.scrollTop;
});
在这种情况下,这将绑定此元素上的所有类型的滚动事件,以便您也可以处理
通过e.currentTarget.scrollTop
垂直
和
由e.currentTarget.scrollLeft
水平
此解决方案将检测DOM事件。 div不需要有一些滚动条
您应该能够使用此代码段检测滚动方向:
$(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;
});
它应该适用于所有浏览器。 如果需要检测水平方向,请将wheelDeltaX
替换为wheelDeltaY
如果要检测滚动方向并让页面滚动,请在结尾处return true
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.