今天来讲讲 Jquery 中的回调对象这个知识点
(1) jQuery.Callbacks( flags )
描述:一个多用途的回调列表对象,提供了强大的的方式来管理回调函数列表。
flags:string,一个用空格标记分隔的标志可选列表,用来改变回调列表中的行为。
function fn1( value ){
console.log( value )
}
function fn2( value ){
fn1('fn2 says:' + value);
return false;
}
var callbacks = $.Callbacks(); //回调函数列表
callbacks.add( fn1 ) //将 fn1 添加到回调函数列表中
callbacks.fire('foo!') //传入参数并执行所有回调函数
callbacks.add( fn2 );
callbacks.remove( fn2 ) //从回调列表中删除一个特定的回调
支持的 flags
var callbacks = $.Callbacks( "once" );
//确保这个回调列表只执行( .fire() )一次(像一个递延 Deferred).
var callbacks = $.Callbacks( "memory" );
//保持以前的值,将添加到这个列表的后面的最新的值立即执行调用任何回调 (像一个递延 Deferred).
var callbacks = $.Callbacks( "unique" );
// 确保一次只能添加一个回调(所以在列表中没有重复的回调).
var callbacks = $.Callbacks( "stopOnFalse" );
//当一个回调返回false 时中断调用
(2) callbacks.add( callbacks )
回调列表中添加一个回调或回调的集合。
callbacks:一个函数,或者一个函数数组,用来添加到回调列表
var foo = function( value ){
console.log( 'foo: ' + value);
}
var bar = function( value ){
console.log( 'bar: ' + value);
}
var callbacks = $.Callbacks();
callbacks.add('foo');
//callbacks.add([foo, bar]);
callbacks.fire('哈哈哈')
(3) callbacks.disable()
禁用回调列表中的回调,这个方法不接受任何参数,返回绑定它的那个回调函数
callbacks.disable();
(4) callbacks.empty();
从列表中删除所有的回调,不接受任何参数
callbacks.empty();
(5) callbacks.fire(arguments)
传入指定的参数调用所有的回调
callbacks.fire( "bar" );
(6) callbacks.fired()
确定回调是否至少已经调用一次
不接受任何参数
var foo = function( value ){
console.log( 'foo: ' + value);
}
var callbacks = $.Callbacks();
callbacks.add( foo );
callbacks.fire('hello');
callbacks.fire('world');
console.log( callbacks.fired() ) => true
(7) callbacks.fireWith([context],[,args])
访问给定的上下文和参数列表中的所有回调
var log = function(value1, value2){
console.log( 'Received: ' + value1 + ',' + value2 );
}
var callbacks = $.Callbacks();
callbacks.add( log )
callbacks.fireWith( window, ['foo', 'bar']); ==> 'Received: foo, bar'
(8) callbacks.has( callback )
确定列表是否有绑定任何回调,如果回调作为一个参数提供,那么可以确定其是否在列表中
var foo = function(value1, value2){
console.log( 'Received: ' + value1 + ',' + value2 );
}
var bar = function( value1, value2 ){
console.log( 'foobar' );
}
var callbacks = $.Callbacks();
callbacks.add( foo );
console.log( callbacks.has( foo ) ) //==> true
console.log( callbacks.has( bar ) );//==> false
(9) callbacks.lock()
锁定回调列表的当前状态
callbacks.lock();
(10) callbacks.locked()
确定回调列表是否已被锁定
callbacks.locked();
(11) callbacks.remove(callbacks)
从回调列表中删除的一个函数或者函数数组
callbacks.remove( foo );