在我的代码中,为一个元素设置了一个事件处理器,它将该元素的css高度更改为100px,在其他地方,我希望在满足某些条件时运行一个不同的事件处理器,它将覆盖以前的事件处理器并将其高度更改为200px。有没有办法做到这一点,或者清除以前为元素设置的所有事件处理程序?
1sbrub3j1#
是的,只需使用.off(),例如
.off()
$('selector').off('eventname')
goqiplq22#
这是一个有点黑客,但它听起来像你试图黑客对别人的代码没有能力直接改变它,所以这可能是你不得不采取。如果你只需要在document.ready()之后调用一些东西,并且你不控制document.ready()语句的顺序,那么你可以在document.ready处理程序中放置一些代码,在一个短的超时内,如下所示:
document.ready()
$(document).ready(function() { setTimeout(function() { $('selector').off('eventname').on('eventname', your_event_handler_here); }, 1); });
setTimeout()将在所有document.ready()处理程序运行之后运行。
setTimeout()
06odsfpq3#
另一种方式:
$(window).on('load', function() { $('selector').off('eventname').on(your event handler here); });
文档准备就绪后执行加载
3条答案
按热度按时间1sbrub3j1#
是的,只需使用
.off()
,例如goqiplq22#
这是一个有点黑客,但它听起来像你试图黑客对别人的代码没有能力直接改变它,所以这可能是你不得不采取。
如果你只需要在
document.ready()
之后调用一些东西,并且你不控制document.ready()
语句的顺序,那么你可以在document.ready处理程序中放置一些代码,在一个短的超时内,如下所示:setTimeout()
将在所有document.ready()处理程序运行之后运行。06odsfpq3#
另一种方式:
文档准备就绪后执行加载