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

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事件会不会绑定多次?在内存中会不会存有多个回调函数?


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

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

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

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

【热门文章】
【热门文章】