2012-02-21 9 views
4

アイソトープに基づいてページを作っています。メインディスプレイは水平方向にスクロールし、jquery.mousehweel scriptを使用してデフォルトのマウスホイール操作を行いました。記事を開いたときにデフォルトのアクションをユーザに戻して、それを水平にスクロールさせないようにしたいのですが、どうやってそれを行うのか分かりません。jquery.mousewheelのバインドを一時的に解除する方法

ここでは例を示しますjsfiddleリンクです:

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

あなたはボックスをクリックすると、それは非常に背が高くなっていますが、マウスホイールを使用している場合、それはまだ側にページ側をスクロールします。私はボックスを背にしている間だけユーザーが垂直にスクロールするようにしたいと思います。

ありがとうございました!

注:マウスが#container divを超えていない場合は、既にマウスを使用して水平方向にスクロールすることができます。問題は、マウスがすべてのボックスを含む#makeMeScrollable divの上にあるときです。

答えて

2

まったく同じ機能をバインド解除する必要があります。あなたのコードでは、同じフットプリントで別の関数のバインドを解除しています。まったく同じ機能を使用するには、最初に定義して変数を格納してから、bindunbindの両方でその変数への参照を使用します。あなたの文脈でこれが動作することを示すあなたのフィドルへのアップデートについては、http://jsfiddle.net/DJVX2/530/を参照してください。基本的な考え方はこれです:

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

// Unbind the callback 
$(selector).off('event', callback); 
:jQueryの1.7(本稿執筆時点での最新バージョン)のよう

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

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

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

、結合事象の好ましい方法は、次のようにonoffを使用することです

(さらに、これらの引数に別の引数を渡して、イベントの委任を行うこともできます)

+1

または 'on()| off()' ... – elclanrs

+0

はい、@elclanrsは 'on'と 'off'はイベントbindiの優先です最新のjQueryバージョンで。 –

+0

@elclanrs、好きな方法を示すために私の答えを更新しました。 –

関連する問題