2011-01-18 268 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,所以在真实世界中你应该存储完整的数组信息。在这个例子中,我只保存了第一个处理程序。