2011-01-18 25 views
4

これは純粋に理論上の質問ですので、私は代替ソリューションを探していません。jQueryでDOMイベントを再バインドする

$(document).ready(function() { 
    var $test = $('#test'); 

    $test.bind('click', function() { 
     alert('default handler'); 
    }); 

    var storedClick = $test.data('events').click[0].handler; 

    $test.unbind('click'); 

    $('#restore').click(function() { 
     $test.bind('click', storedClick); 
    }); 
}); 

参照:

あなたは、すべてのイベントハンドラ情報を格納するために使用され.data('events')オブジェクトにアクセスすることができます。この

var defaultHandler = $("#test").click; 
$('#test').unbind('click'); 
$('#test').bind('click', defaultHandler); 
+0

「デフォルトハンドラ」とはどういう意味ですか? jQueryイベントハンドラが存在しない場合にブラウザが実行するデフォルトのアクションですか? – lonesomeday

+0

いいえ - 「クリック」を解除することで失われるものは何でも – jcuenod

答えて

6

ような何かをするために、デフォルトのハンドラを取得するいくつかの方法がありますこれは実際には:http://www.jsfiddle.net/76GPF/

は、Arraysを保持していますあなたは完全な配列情報を格納する必要があります。この例では最初のハンドラを格納したばかりです。

+0

私は彼が求めているものではないと信じています。 – BrunoLM

+0

@BrunoLM:彼の例では、$( '#test')のclickはイベントハンドラを表しますが、jQueryメソッドを表しています。 – jAndy

+0

はい、あなたは正しいです。これはjQueryでバインドするときにイベントが格納される唯一の場所です。私は単純なjsと混乱していた。 – BrunoLM

関連する問題