在使用的第三方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绑定了某个事件,如果不先取消某个元素对某个事件的绑定,很可能会出现的情况是:多次触发该事件响应函数!!!