タイトルにあるように、以前にバインドを解除した DIV オブジェクトの 'mouseleave' イベントを再バインドしようとしています。
$(object).unbind('mouseleave');
うまく動作します。
$(object).bind('mouseleave');
しません。これを行う正しい方法は何ですか?
ここにjsFiddle の例をアップロードしました。ご覧 のとおり、.bind() ハンドラーは機能しません...
タイトルにあるように、以前にバインドを解除した DIV オブジェクトの 'mouseleave' イベントを再バインドしようとしています。
$(object).unbind('mouseleave');
うまく動作します。
$(object).bind('mouseleave');
しません。これを行う正しい方法は何ですか?
ここにjsFiddle の例をアップロードしました。ご覧 のとおり、.bind() ハンドラーは機能しません...
イベントハンドラーをバインドするときは、ハンドラー関数の参照も渡す必要があります
$(object).bind('mouseleave', myfunction);
// a handler method
function myfunction(){
}
はmyfunction
、以前に登録されたハンドラー メソッドへの参照です。
基本的に、イベントをバインドするときにハンドラーを渡す必要があります。以前にバインドされていなかった を再アタッチしたいのですmouseleave event
が、ハンドラーが匿名関数にあったため、それへの参照がありません。
解決策は、後で使用するためにハンドラーを変数に割り当てることです。
$(document).ready(function(){
var handlerIn = function(){ console.log('in')},
handlerOut = function(){ console.log('out')};
$('.mydiv').hover(handlerIn, handlerOut);
$('.remove').click(function(){ $('.mydiv').unbind('mouseleave', handlerOut); });
$('.add').click(function(){ $('.mydiv').bind('mouseleave', handlerOut); });
});