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