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。
至于是将注册事件放全局还是放函数中就要看个人的需求了。