使用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弄糊涂了。谢谢,这就是我要找的。我所说的“无替代解决方案”是指不要说“只需声明函数,然后绑定/解除绑定它”。