0

ライトボックス効果のためにボディのクリックイベントをキャプチャしています。

多くのライトボックスを一度に開くことができます。

それらの1つを閉じるとき、それぞれのハンドラーを停止させたいと思います。

しかし、それらはすべて「本体」にバインドされているため、1回のバインド解除呼び出しで、すべてのバインドが解除されます。

$('body').bind('click', function(){ HelperPopup.mouseup_handler($el, mouse_is_inside);  });

//  .. then later ..

mouseup_handler: function($el, mouse_is_inside) {

    $el.fadeOut(100);
    $('body').unbind('click', HelperPopup.mouseup_handler($el) );
    return false;
  };          
},

ありがとう!

4

1 に答える 1

1

名前空間付きイベントタイプと、ハンドラーへの参照によるバインド解除の2つのオプションがあります。

名前空間イベントタイプ:

$(selector).on('click.mynamespace', somehandler);
...
$(selector).off('click.mynamespace');

参照によるバインド解除:

$(selector).on('click', somehandler);
...
$(selector).off('click', somehandler);

明らかに、アタッチした実際のハンドラーへの参照を保持する必要があるため、無名関数では少し不便です。

更新:推奨されるon/ offjQueryメソッドを使用するように回答を変更しました。

于 2012-10-08T14:08:24.850 に答える