$.callbacks()函数回调管理

2015-5-4    分类: 前端资源,学习jquery基础

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');