2013-08-01 82 views
2

我有一个水平滚动的网站。 Iam使用mousewheel.js使用鼠标滚轮水平滚动(或上下滚动)。我使用的是段从CSS Tricks像这样:暂时禁用滚动mousewheel.js

$("body").mousewheel(function(event, delta) { 
     this.scrollLeft -= (delta * 5); 
     event.preventDefault(); 
    }); 

当我向下滚动,在浏览器解释它作为一个向右滚动。这很好。

我需要能够暂时禁用此行为。举例来说,我有一个用画廊覆盖网站的小组。虽然该面板是打开的,我想禁用,像这样的滚动:

$("a.gal").on("click", function(){ 
    $("#galPanel").addClass("open"); 
    $("body").mousewheel(function(event, delta) { 
     event.preventDefault(); 
    }); 
}); 

当我们退出面板,我要重新开始的鼠标滚轮插件。

任何想法我可以做到这一点?

更新:我发现了一个工作的解决方案,但我不确定这是不是要去它的最佳方式:

$("#galPanel").bind("mousewheel", function() { 
     return false; 
}); 

回答

1

由于您已经使用.on(),因此需要.on().off() for mousewheel event。

$("body").on('mousewheel', function(){ 
// ToDos 
}); 

$("a.gal").on("click", function(){ 
    $("#galPanel").addClass("open"); 
    $("body").off('mousewheel', false); 
}); 

我不知道如何让它在你的代码中工作。但是这个简单,就像开关打开和关闭)。

1

可能,这将帮助:您可以使用.on()

$('#galPanel').on('mousewheel', function(event, delta){ 
     event.preventDefault(); // Or return false 
});