DOM事件绑定回调函数执行过程是什么?

1、在js中,常用匿名函数进行事件绑定,如下:

$("#button").on("click", function(){
    alert(123);
});

问: 此匿名函数是调用一次后就废弃吗?还是会有一个隐式引用,如下面代码中的fn一样?

var fn = function(){ alert(123); }
$("#button").on("click", fn)

2、将事件绑定函数写在全局里面好还是封装在一个函数中好?

放在全局函数中

$("#button").on("click", function(){
    alert(123);
});

放在函数中

function doClick(){
    $("#button").on("click", function(){
        alert(123);
    });
}

感觉放在函数中能够进行调用控制,比如在ajax回调中,如果成功了就添加绑定,如果失败了就不添加绑定

if(success) {
    doClick();
} else {
    // do other thing
} 

但是如果有多个回调函数需要调用doClick方法,那 $("#button")的click事件会不会绑定多次?在内存中会不会存有多个回调函数?

阅读 4.1k
1 个回答

名称:注册事件/发射事件

说的明白点就是有一个事件池,每一次调用事件的时候,就去遍历事件池,有则发射。

在jq中通过on注册的事件是一直可以被发射的,应该有那种once的注册方法,调用一次后就会将事件从事件池中删除,猜测once内部封装了on和off。

至于是将注册事件放全局还是放函数中就要看个人的需求了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题