jquery $.callbacks 函数 回调 管理
注:阅读版本为1.8.3
$.callbacks() //管理多个 函数 回调
function fn1(i,a){ alert(i+a); return false } function fn2(){ alert('f2'); } function fn3(){ alert('f3'); }
var callbacks=$.Callbacks(); //创建回调对象 callbacks.disable(); //跟empty()类似,但它仅次哪条语句之下就禁用哪条,以下代码不受影响。 callbacks.add(fn1); // 方式1 callbacks.add(fn1, fn2); // 方式2 一次添加多个回调函数 callbacks.add([fn1, fn2]); // 方式3 传数组 callbacks.add(fn1, [fn2]); // 方式4 函数和数组掺和 callbacks.remove(fn1); //移除fn1的回调 callbacks.empty(); //移除所有 回调函数 callbacks.fire(1,1); //执行add()中添加的函数,括号里传参数 callbacks.fireWith(window,[1,1]); //跟fire(1,1)类似 callbacks.has(fn3); //判断某函数是否加入了回调列表中 callbacks.fired(); //判断 只要调用过一次fire或fireWith就会返回true。
$.Callbacks() //可传递4种参数 once,memory,unique,stopOnFalse,也可组合使用。
once:触发一次
var callbacks=$.Callbacks('once');
callbacks.add(fn);
callbacks.fire(); // 触发一次
callbacks.fire(); // 不再触发
memory:触发全部函数不分先后
callbacks.add(fn1);
callbacks.fire();
callbacks.add(fn2); // fn2也会触发到
unique:保证重复出现的函数也仅调用一次
callbacks.add(fn1);
callbacks.add([fn1, fn2]); // fn1重复了
callbacks.fire(); // fn1不会在被执行
stopOnFalse: 让函数中有return false的语句生效
function fn1() {
console.log(1)
}
function fn2() {
console.log(2)
return false // 注意这里
}
function fn3() {
console.log(3)
}
var callbacks = $.Callbacks('stopOnFalse');
callbacks.add(fn1, fn2, fn3);
callbacks.fire(); // fn3 不会被执行到
可以随意组合使用 var callbacks = $.Callbacks('once stopOnFalse');