2011-01-18 267 views
4

這純粹是一個理論問題,所以我沒有尋找替代解決方案。用jQuery重新綁定DOM事件

有獲取默認處理程序做這樣的事情

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

你是什麼意思的「默認處理程序」?在沒有任何jQuery事件處理程序的情況下,瀏覽器將採取默認操作? – lonesomeday 2011-01-18 21:26:18

+0

沒有 - 無論是通過解除'點擊'丟失 – jcuenod 2011-01-18 21:28:33

回答

6

的一些方法,您可以訪問.data('events')對象,它是用來存儲所有的事件處理程序的信息:

$(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); 
    }); 
}); 

見這個動作:http://www.jsfiddle.net/76GPF/

記住,events object持有Arrays,所以在真實世界中你應該存儲完整的數組信息。在這個例子中,我只保存了第一個處理程序。