dar*_*ong 5 javascript jquery javascript-events
在这个模块中我正在研究我在窗口中有一个'resize'事件的监听器.每次运行模块时,我都需要检查是否已经有一个监听器注册到该事件并将其分离,以避免不必要的行为,内存泄漏等.
到目前为止一直很好,但是,在我们正在开发的这个应用程序中,有些处理程序已经附加到'resize'事件并且我无法调用$(window).off('resize'),因为这将刷新之前由其他插件注册的所有其他事件处理程序或模块.
话虽如此,我想知道是否有办法识别我的处理程序,只分离我自己注册的东西.如何在事件处理程序中设置标识符以便在.off()函数中引用?
你能帮忙的话,我会很高兴.
Kar*_*non 12
这有2个不同的建议.您可以为事件指定命名空间,也可以在绑定时传递非匿名函数.
$(window).on('resize.event1', function(){});
$(window).on('resize.event2', function(){});
//Only turn off event 2
$(window).off('resize.event2');
Run Code Online (Sandbox Code Playgroud)
jQuery允许您识别您的活动.此行为称为命名空间.当前事件和事件名称必须用点分隔.在这种情况下,我绑定2调整大小事件(点的左侧),一个与名称event1,另一个与event2.
通过标识事件,您可以在对象具有多个相同事件时删除(或触发)单个事件.
$(window).trigger('resize'); //Trigger both;
$(window).trigger('resize.event2'); //Trigger event2;
Run Code Online (Sandbox Code Playgroud)
$(window).on('resize', function1);
$(window).on('resize', function2);
//Only turn off event 2
$(window).off('resize', function2);
Run Code Online (Sandbox Code Playgroud)
如果传递的函数与当前事件函数匹配,则关联非匿名函数允许您删除事件.因为function2 === function2,只有第二个功能将被删除function1 !== function2!
| 归档时间: |
|
| 查看次数: |
715 次 |
| 最近记录: |