0

タイトルにあるように、以前にバインドを解除した DIV オブジェクトの 'mouseleave' イベントを再バインドしようとしています。

$(object).unbind('mouseleave');

うまく動作します。

$(object).bind('mouseleave');

しません。これを行う正しい方法は何ですか?

ここにjsFiddle の例をアップロードしました。ご覧 のとおり、.bind() ハンドラーは機能しません...

4

3 に答える 3

1

イベントハンドラーをバインドするときは、ハンドラー関数の参照も渡す必要があります

$(object).bind('mouseleave', myfunction);

// a handler method
function myfunction(){
}

myfunction、以前に登録されたハンドラー メソッドへの参照です。

于 2013-09-02T10:42:41.333 に答える
0

基本的に、イベントをバインドするときにハンドラーを渡す必要があります。以前にバインドされていなかった を再アタッチしたいのです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); });
});

デモ jsFiddle

于 2013-09-02T12:23:42.363 に答える