JS阻止浏览器滚动事件

在前几天的项目中,场景值如下:
1.动态生成列表,列表高度不固定
2.外面父元素的属性设置为overflow:auto;
3.鼠标移动到列—li中的a上,出现选择列表,鼠标在列表上,列表不消失
4.当鼠标放置到出现的列表上时,再滚动滑轮,因为出现的列表为是根据标签a的位置来进行定位的,所以滚动的时a页面在滚动,但列表位置虽然没变,但与原来a标签相符合的位置却变了


因为父元素overflow的存在,无法使用hover状态,超出的部分会隐藏掉或者会出现跳动的状态。所以就用了如果在a标签上就阻止页面的滚动事件,代码如下。

    //阻止浏览器事件
    function disabledMouseWheel() {  
           document.addEventListener('DOMMouseScroll', scrollFunc, false);  
           document.addEventListener('mousewheel',scrollFunc,false);
    }
    //取消阻止浏览器事件
    function cancelDisMouseWheel(){
           document.removeEventListener('DOMMouseScroll',scrollFunc,false);
           document.removeEventListener('mousewheel',scrollFunc,false);
    }  
    function scrollFunc(evt) {  
           evt = evt || window.event;  
            if(evt.preventDefault) {  
                // Firefox  
                evt.preventDefault();  
                evt.stopPropagation();  
                } else{  
                // IE  
                evt.cancelBubble=true;  
                evt.returnValue = false;  
        }  
             return false;  
    }

跳动状态如下图
这里写图片描述
如有疑问,欢迎交流提问

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值