javascript 如何重写先前设置的jquery事件处理程序?

yvfmudvl  于 2023-03-11  发布在  Java
关注(0)|答案(3)|浏览(93)

在我的代码中,为一个元素设置了一个事件处理器,它将该元素的css高度更改为100px,在其他地方,我希望在满足某些条件时运行一个不同的事件处理器,它将覆盖以前的事件处理器并将其高度更改为200px。
有没有办法做到这一点,或者清除以前为元素设置的所有事件处理程序?

1sbrub3j

1sbrub3j1#

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

$('selector').off('eventname')
goqiplq2

goqiplq22#

这是一个有点黑客,但它听起来像你试图黑客对别人的代码没有能力直接改变它,所以这可能是你不得不采取。
如果你只需要在document.ready()之后调用一些东西,并且你不控制document.ready()语句的顺序,那么你可以在document.ready处理程序中放置一些代码,在一个短的超时内,如下所示:

$(document).ready(function() {
    setTimeout(function() {
        $('selector').off('eventname').on('eventname', your_event_handler_here);
    }, 1);
});

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

06odsfpq

06odsfpq3#

另一种方式:

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

文档准备就绪后执行加载

相关问题