如何暂时取消绑定jquery.mousewheel

时间:2012-02-21 01:22:09

标签: jquery default mousewheel unbind

我正在制作一个基于同位素的页面。主显示屏水平滚动,我使用jquery.mousehweel script进行默认鼠标滚轮操作。我想在打开文章时将默认操作返回给用户,并阻止它水平滚动,但我无法弄清楚如何操作。

以下是给出示例的jsfiddle链接:

http://jsfiddle.net/DJVX2/529/

当您单击一个框时,它会变得非常高,但是如果您使用鼠标滚轮,它仍会将页面左右滚动。我想让用户只在盒子高的时候垂直滚动。

感谢您的帮助!

注意:如果您的鼠标不在#container div上,您就可以使用鼠标水平滚动。问题是当鼠标位于包含所有框

的#makeMeScrollable div之上时

1 个答案:

答案 0 :(得分:2)

你必须取消绑定完全相同的功能。在您的代码中,您正在解除具有类似占用空间的不同功能。要使用完全相同的函数,首先定义它并将其存储为变量,然后在bindunbind中使用对该变量的引用。有关您的小提琴的更新,请参阅http://jsfiddle.net/DJVX2/530/,以便在您的上下文中使用此功能。基本思路是:

// Define the callback
var callback = function(ev) { ... };

// Bind the callback
$(selector).bind('event', callback);

// Unbind the callback
$(selector).unbind('event', callback);

从jQuery 1.7(撰写本文时的最新版本)开始,事件绑定的首选方法是使用onoff,如下所示:

// Bind the callback
$(selector).on('event', callback);

// Unbind the callback
$(selector).off('event', callback);

(请注意,您还可以将另一个参数传递给这些参数以进行事件委派。有关详细信息,请参阅the docs