在我的代码中,设置了一个元素的事件处理程序,它将该元素的css高度更改为100px。在其他地方,我希望在某些条件满足时运行不同的事件处理程序,这应该覆盖先前的事件处理程序并将其高度更改为200px。
有没有办法做到这一点,或清除所有以前为元素设置的事件处理程序?
答案 0 :(得分:16)
是的,只需使用.off()
,例如
$('selector').off('eventname')
答案 1 :(得分:3)
这有点像黑客,但听起来你正试图破解其他人的代码而无法直接更改它,这可能是你必须诉诸的。
如果您只需要在document.ready()
之后调用某些内容并且您不控制document.ready()
语句的顺序,那么您可以在文档中的短暂超时中放入一些代码。准备好的处理程序:
$(document).ready(function() {
setTimeout(function() {
$('selector').off('eventname').on(your event handler here);
}, 1);
});
setTimeout()
将在所有document.ready()处理程序运行后运行。
答案 2 :(得分:1)
另一种方式:
$(window).on('load', function() {
$('selector').off('eventname').on(your event handler here);
});
在文档准备就绪后执行加载