Jquery回调对象

今天来讲讲 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 );

你可能感兴趣的:(Jquery回调对象)