今天來講講 Jquery 中的回調(diào)對(duì)象這個(gè)知識(shí)點(diǎn)
(1) jQuery.Callbacks( flags )
描述:一個(gè)多用途的回調(diào)列表對(duì)象,提供了強(qiáng)大的的方式來管理回調(diào)函數(shù)列表器贩。
flags:string颅夺,一個(gè)用空格標(biāo)記分隔的標(biāo)志可選列表,用來改變回調(diào)列表中的行為。
function fn1( value ){
console.log( value )
}
function fn2( value ){
fn1('fn2 says:' + value);
return false;
}
var callbacks = $.Callbacks(); //回調(diào)函數(shù)列表
callbacks.add( fn1 ) //將 fn1 添加到回調(diào)函數(shù)列表中
callbacks.fire('foo!') //傳入?yún)?shù)并執(zhí)行所有回調(diào)函數(shù)
callbacks.add( fn2 );
callbacks.remove( fn2 ) //從回調(diào)列表中刪除一個(gè)特定的回調(diào)
支持的 flags
var callbacks = $.Callbacks( "once" );
//確保這個(gè)回調(diào)列表只執(zhí)行( .fire() )一次(像一個(gè)遞延 Deferred).
var callbacks = $.Callbacks( "memory" );
//保持以前的值蛹稍,將添加到這個(gè)列表的后面的最新的值立即執(zhí)行調(diào)用任何回調(diào) (像一個(gè)遞延 Deferred).
var callbacks = $.Callbacks( "unique" );
// 確保一次只能添加一個(gè)回調(diào)(所以在列表中沒有重復(fù)的回調(diào)).
var callbacks = $.Callbacks( "stopOnFalse" );
//當(dāng)一個(gè)回調(diào)返回false 時(shí)中斷調(diào)用
(2) callbacks.add( callbacks )
回調(diào)列表中添加一個(gè)回調(diào)或回調(diào)的集合吧黄。
callbacks:一個(gè)函數(shù),或者一個(gè)函數(shù)數(shù)組唆姐,用來添加到回調(diào)列表
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()
禁用回調(diào)列表中的回調(diào)拗慨,這個(gè)方法不接受任何參數(shù),返回綁定它的那個(gè)回調(diào)函數(shù)
callbacks.disable();
(4) callbacks.empty();
從列表中刪除所有的回調(diào),不接受任何參數(shù)
callbacks.empty();
(5) callbacks.fire(arguments)
傳入指定的參數(shù)調(diào)用所有的回調(diào)
callbacks.fire( "bar" );
(6) callbacks.fired()
確定回調(diào)是否至少已經(jīng)調(diào)用一次
不接受任何參數(shù)
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])
訪問給定的上下文和參數(shù)列表中的所有回調(diào)
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 )
確定列表是否有綁定任何回調(diào),如果回調(diào)作為一個(gè)參數(shù)提供烦却,那么可以確定其是否在列表中
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()
鎖定回調(diào)列表的當(dāng)前狀態(tài)
callbacks.lock();
(10) callbacks.locked()
確定回調(diào)列表是否已被鎖定
callbacks.locked();
(11) callbacks.remove(callbacks)
從回調(diào)列表中刪除的一個(gè)函數(shù)或者函數(shù)數(shù)組
callbacks.remove( foo );