使用jQuery重新绑定DOM事件

使用jQuery重新绑定DOM事件,jquery,jquery-events,Jquery,Jquery Events,这纯粹是一个理论问题,所以我不是在寻找替代方案 有没有办法让默认处理程序执行类似的操作 var defaultHandler = $("#test").click; $('#test').unbind('click'); $('#test').bind('click', defaultHandler); 您可以访问.data('events')对象,该对象用于存储所有事件处理程序信息: $(document).ready(function() { var $test = $('#tes

这纯粹是一个理论问题,所以我不是在寻找替代方案

有没有办法让默认处理程序执行类似的操作

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

您可以访问
.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);
    });
});
请看这一行动:


请记住,
events对象
包含
数组
,因此在现实世界中,您应该存储完整的数组信息。在本例中,我只存储了第一个处理程序。

您所说的“默认处理程序”是什么意思?浏览器在没有任何jQuery事件处理程序的情况下会采取的默认操作?不-取消绑定“单击”会丢失什么?我相信这不是他的要求。他说得很清楚
我不是在寻找替代解决方案。
@BrunoLM:我不确定,在他的例子中
$(“#test”)。单击
确实表示事件处理程序,但表示jQuery方法。是的,您是正确的。这是使用jQuery绑定时存储事件的唯一位置。我把普通js弄糊涂了。谢谢,这就是我要找的。我所说的“无替代解决方案”是指不要说“只需声明函数,然后绑定/解除绑定它”。