jquery off on trigger

2022-03-28 14:33:38 浏览数 (1)

在使用的第三方js插件里面经常会看到下面用法:

代码语言:javascript复制
$(window)
		.off('hashchange.ace_ajax')
		.on('hashchange.ace_ajax', function(e, manual_trigger) {
			var hash = $.trim(window.location.hash);
			if(!hash || hash.length == 0) return;
			
			if(self.settings.close_mobile_menu) {
				try {$(self.settings.close_mobile_menu).ace_sidebar('mobileHide')} catch(e){}
			}
			if(self.settings.close_dropdowns) {
				$('.dropdown.open .dropdown-toggle').dropdown('toggle');
			}
			
			self.loadUrl(hash, null, manual_trigger);
		}).trigger('hashchange.ace_ajax', [true]);

这是ace admin框架里面可以看到的代码,这段代码的作用是:

1.off用来取消window对hashchange事件的绑定

2.on用来绑定window对hashchange事件的绑定

3.trigger用以触发hashchange事件

为什么这么用?

试想一下多个文件包含一个js,这个js绑定了某个事件,如果不先取消某个元素对某个事件的绑定,很可能会出现的情况是:多次触发该事件响应函数!!!

0 人点赞