7

在我的代码中,设置了一个元素的事件处理程序,该处理程序将该元素的 css 高度更改为 100px。在其他地方,如果满足某些条件,我希望运行不同的事件处理程序,它应该覆盖以前的事件处理程序并将其高度更改为 200px。

有没有办法做到这一点,或者清除所有先前为元素设置的事件处理程序?

4

3 回答 3

20

是的,只需使用.off(),比如

$('selector').off('eventname')
于 2012-12-28T01:46:08.173 回答
4

这有点像黑客,但听起来你正试图破解别人的代码,而无法直接更改它,所以这可能是你不得不求助的。

如果您只需要在它们之后调用某些东西document.ready()并且您不控制document.ready()语句的顺序,那么您可以在 document.ready 处理程序中像这样将一些代码放入一个短暂的超时中:

$(document).ready(function() {
    setTimeout(function() {
        $('selector').off('eventname').on(your event handler here);
    }, 1);
});

setTimeout()在所有 document.ready() 处理程序运行后运行。

于 2012-12-28T01:58:02.860 回答
2

另一种方式:

$(window).on('load', function() {
   $('selector').off('eventname').on(your event handler here);
});

文件准备好后执行加载

于 2018-07-06T21:26:08.017 回答