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