我正在使用此处显示的鼠标滚轮插件:
https://github.com/jquery/jquery-mousewheel
它适用于让页面水平滚动,但我想暂时禁用它并在弹出几个特定div时恢复垂直滚动。我试过这个:
jQuery(document).ready(function() {
jQuery('html, div.everthing').mousewheel(function(e, delta) {
this.scrollLeft -= (delta * 1);
e.preventDefault();
});
jQuery(".interests.content .child").mouseover(
function stopHorizScroll(){
var vScroll = [
jQuery(".child.books").attr("class"),
jQuery(".child.quotes").attr("class"),
jQuery(".child.humans").attr("class"),
jQuery(".child.travel").attr("class")
];
var x = "show"
if (vScroll[0].indexOf(x) !== -1) {
jQuery('html, div.everthing').mousewheel(function(e, delta) {
return false;
});
}
});
});
答案 0 :(得分:0)
您已经绑定了鼠标滚轮事件。 return false
对您之前绑定的事件没有任何作用。要执行您要执行的操作,您需要取消绑定原始事件,然后在mouseleave上重新绑定或停止传播。我不确定你是否可以取消绑定/销毁鼠标滚轮事件,我不确定e.stopPropagation()
是否可以正常工作。
也许更简单的解决方案是在有人悬停在该div上时设置标志,并在设置标志时阻止水平滚动。例如,像这样的东西可能会起作用:
var stopScroll = false;
jQuery('html, div.everthing').mousewheel(function(e, delta) {
if ( stopScroll ) return;
this.scrollLeft -= (delta * 1);
e.preventDefault();
});
jQuery(".interests.content .child").hover(function() {
stopScroll = true;
}, function() {
stopScroll = false;
});