如果您说如果鼠标光标(悬停)在特定元素上时要防止发生滚动,则使用您提供的函数并添加条件,以便仅在未设置标志时取消 DOMMouseScroll 事件:
var allowScroll = true;
$("div.noscroll").hover(function() {
allowScroll = false;
}, function() {
allowScroll = true;
});
document.addEventListener('DOMMouseScroll', function(e) {
if (!allowScroll) {
console.log(e);
e.stopPropagation();
e.preventDefault();
e.cancelBubble = false;
return false;
}
}, false);
演示:http: //jsfiddle.net/WSQbp/
鉴于您已经用“jquery”标记了您的问题,我使用 jQuery 来设置管理标志的悬停处理程序。您可以通过使用 jQuery 设置 DOMMouseScroll 处理程序来进一步简化代码:
$(document).on('DOMMouseScroll', function() {
if (!allowScroll)
return false;
});
演示:http: //jsfiddle.net/WSQbp/1/