jQuery核心--回调对象

列表

函数说明
callbacks.add()用于向回调列表中添加一个回调或回调的集合
callbacks.disable()禁用回调函数列表中的回调
callbacks.disabled()用于确定回调列表是否已被禁用。
callbacks.empty()用于从列表中删除所有的回调。
callbacks.fire()用于传入指定的参数调用所有的回调。
callbacks.fired()确定回调是否至少已经调用一次。
callbacks.fireWith()用于函数给定上下文和参数来访问列表中的所有回调。
callbacks.has()用于判断回调列表中是否添加过某回调函数。
callbacks.lock()用于锁定当前状态的回调列表。
callbacks.locked()用于判断回调列表是否已被锁定。
$.Callbacks()一个多用途的回调列表对象,提供了强大的的方式来管理回调函数列表。

回调方法禁用、锁定等后没有解除禁用、锁定的方法

说明

callbacks.add()

添加函数到回调函数列表

语法

  • callbacks.add( callbacks )

jQuery1.7新增该函数

参数说明

参数说明
callbacksFunction/Array类型 一个函数,或者一个函数数组,用来添加到回调列表

返回值

callbacks.add()方法返回绑定它的那个回调列表对象(this).

示例&说明

jQuery示例代码

var foo = function( value ) {
      alert( "foo: " + value );
};
// 另一个函数将被添加到列表
var bar = function( value ){
      alert( "bar: " + value );
};     
var callbacks = $.Callbacks();     

callbacks.add( foo );   // 添加函数 "foo" 到列表  
// 传入参数调用所有回调列表函数
callbacks.fire( "hello" );// 输出: "foo: hello"   
callbacks.add( bar );  // 添加函数 "bar" 到列表   
// 传入参数调用所有回调列表函数
callbacks.fire( "world" );     
// 输出:
// "foo: world"
// "bar: world"

callbacks.disable()

禁用回调列表中的回调函数

语法

  • callbacks.disable()

jQuery1.7新增该函数

返回值

callbacks.disable()方法返回一个绑定回调列表的回调对象。

示例&说明

jQuery示例代码

function fn1( value ) {
    console.log("fn1:"+ value );
    return false;
}
var callbacks = $.Callbacks();
callbacks.add( fn1 );
callbacks.fire( "foo!" );//fn1:foo!

callbacks.disable();
callbacks.fire( "bar!" );//无输出

callbacks.disabled()

用于确定回调列表是否已被禁用

语法

  • callbacks.disabled()

jQuery1.7新增该函数

返回值

callbacks.disabled()方法返回一个boolean类型,表明回调列表是否被禁用。

示例&说明

jQuery示例代码

function fn1( value ) {
    console.log("fn1:"+ value );
    return false;
}

var callbacks = $.Callbacks();
callbacks.add( fn1 );
callbacks.fire( "foo!" );//fn1:foo!
callbacks.disable();
var result=callbacks.disabled();
console.log(result)//true
callbacks.fire( "bar!" );//无输出

callbacks.empty()

用于从列表中删除所有的回调函数。

语法

  • callbacks.empty()

jQuery1.7新增该函数

返回值

callbacks.empty()方法返回一个绑定回调列表的回调对象

示例&说明

jQuery示例代码

function fn1( value ) {
    console.log("fn1:"+ value );
    return false;
}

function fn2( value ) {
    fn1("fn2 says: " + value);
    return false;
}
function fn3( value ) {
    fn1("fn3 says: " + value);
    return false;
}

var callbacks = $.Callbacks();

callbacks.add( fn1 );
callbacks.add( fn2 );
callbacks.add( fn3 );

callbacks.fire( "foo!" );
/*
输出:
fn1:foo!
fn1:fn2 says: foo!
fn1:fn3 says: foo!
*/
callbacks.empty();
callbacks.fire( "bar!" );//无输出

callbacks.fire()

callbacks.fire() 函数用于传入指定的参数调用所有的回调列表中的回调函数。

语法

  • callbacks.fire(arguments )

jQuery1.7新增该函数

参数说明

参数说明
arguments任意类型 传回给回调列表的参数或参数列表

返回值

callbacks.fire()方法返回一个绑定回调列表的回调对象

示例&说明

jQuery示例代码

function fn1( value ) {
    console.log("fn1:"+ value );
    return false;
}

var callbacks = $.Callbacks();

callbacks.add( fn1 );
callbacks.fire( "foo!" );//fn1:foo!

callbacks.fired()

用于确定回调是否至少已经调用一次。

语法

  • callbacks.fired()

jQuery1.7新增该函数

返回值

callbacks.fired()方法返回一个Boolean类型,表明回调列表是否至少已经调用一次。

示例&说明

jQuery示例代码

function fn1( value ) {
    console.log("fn1:"+ value );
    return false;
}

var callbacks = $.Callbacks();
callbacks.add( fn1 );
console.log(callbacks.fired() );//false
callbacks.fire( "foo!" );//fn1:foo!
console.log(callbacks.fired() );//true

callbacks.fireWith()

callbacks.fireWith() 函数给定上下文和参数来访问列表中的所有回调函数。

语法

  • callbacks.fireWith( [context ] [, args ] )

jQuery1.7新增该函数

参数说明

参数说明
context任意类型 该回调列表中被触发的上下文的一个引用
args任意类型 传回给回调列表的参数或参数列表

context:具体引用的作用是什么?下次调用context时直接触发fireWith设置的回调函数?

返回值

callbacks.fireWith()方法返回一个绑定回调列表的回调对象

示例&说明

jQuery示例代码

function fn1( value1,value2 ) {
    console.log("fn1:"+ value1+"fn1:"+value2 );
    return false;
}

var callbacks = $.Callbacks();

callbacks.fireWith(window,["foo!","bar!"] );//fn1:foo!fn1:bar!

callbacks.has()

callbacks.has() 函数用于判断回调列表中是否添加过某回调函数。

语法

  • callbacks.has(callbacks )

jQuery1.7新增该函数

参数说明

参数说明
callbacksFunction类型 用来查找的回调函数

返回值

callbacks.has()方法返回一个Boolean类型,判断指定的回调函数是否在回调列表中

示例&说明

jQuery示例代码

function fn1( value ) {
    console.log("fn1:"+ value );
    return false;
}
function fn2( value ) {
    fn1("fn2 says: " + value);
    return false;
}
function fn3( value ) {
    fn1("fn3 says: " + value);
    return false;
}

var callbacks = $.Callbacks();
callbacks.add( fn1 );
callbacks.add( fn2 );
//参数只能有一个,当多个时只判断第一个
console.log(callbacks.has(fn1));//true
console.log(callbacks.has(fn1,fn3));//true
console.log(callbacks.has(fn3,fn1));//false

callbacks.lock()

callbacks.lock() 函数用于锁定当前状态的回调列表。

注意:
1. 如果回调对象被创建,用”memory”标志作为它的参数,绑定函数可能会在回调列表中被锁定后增加并且触发
2. 此方法返回一个绑定回调列表的回调对象。

语法

  • callbacks.lock()

jQuery1.7新增该函数

返回值

callbacks.lock()方法返回一个绑定回调列表的回调对象。

示例&说明

jQuery示例代码:

function fn1( value ) {
    console.log("fn1:"+ value );
    return false;
}
var callbacks = $.Callbacks();
callbacks.add( fn1 );

callbacks.fire("foo!")//fn1:foo!
callbacks.lock()
callbacks.fire("foo!")

使用"memory作为参数创建回调对象,jQuery示例代码

function fn1( value ) {
    console.log("fn1:"+ value );
}
function fn2( value ) {
    fn1("fn2 says: " + value);
    return false;
}
function fn3( value ) {
    fn1("fn3 says: " + value);
    return false;
}
//callbacks将添加到这个列表的后面的最新的值立即执行调用任何回调 
var callbacks = $.Callbacks("memory" );

callbacks.add( fn1 );

//第一次执行 
callbacks.fire( "foo!" );//fn1:foo!

callbacks.lock();

//若之前存在回掉列表调用即.fire(),立即执行最新添加的函数fn2,沿用上一次调用的参数
//若之前不存在回调函数调用即.fire(),则最新添加函数fn2也不发生调用
callbacks.add( fn2 );//fn1:fn2 says: foo!

callbacks.fire( "bar!" );

callbacks.add( fn3 );//fn1:fn3 says: foo!

callbacks.locked()

callbacks.locked() 函数用于判断回调列表是否已被锁定。

语法

  • callbacks.locked()

jQuery1.7新增该函数

返回值

callbacks.locked()方法返回一个boolean类型,表明回调列表是否已被锁定。

示例&说明

jQuery示例代码

function fn1( value ) {
    console.log("fn1:"+ value );
    return false;
}

var callbacks = $.Callbacks();
callbacks.add( fn1 );
var result=callbacks.locked();
console.log(result)//false
callbacks.lock();
result=callbacks.locked();
console.log(result)//true

callbacks.remove()

callbacks.remove(callbacks ) 函数用于从回调列表中的删除一个回调或回调集合。

语法

  • callbacks.remove(callbacks )

jQuery1.7新增该函数

参数说明

参数说明
callbacksFunction/Array类型 要从回调列表中删除的一个函数或函数数组

callbacks 可以直接是多个函数列表(fn1,fn2,fn3)–callbacks.remove(fn1,fn2,fn3)

返回值

callbacks.remove()方法返回一个绑定回调列表的回调对象

示例&说明

删除一个回调函数或批量删除方式,jQuery示例代码

function fn1( value ) {
    console.log("fn1:"+ value );
    return false;
}
function fn2( value ) {
    fn1("fn2 says: " + value);
    return false;
}
function fn3( value ) {
    fn1("fn3 says: " + value);
    return false;
}

var callbacks = $.Callbacks();
callbacks.add( fn1 );
callbacks.add( fn2 );
callbacks.add( fn3 );

callbacks.fire( "foo!" );
/*
输出:fn1:foo!
    fn1:fn2 says: foo!
    fn1:fn3 says: foo!
*/

callbacks.remove(fn2);
callbacks.fire( "bar!" );
/*
输出:fn1:bar!
    fn1:fn3 says: bar!
*/

var array=[];
array[array.length]=fn1;
array[array.length]=fn3;

//callbacks.remove(array);该方式不起作用
//批量删除方式
allbacks.remove(fn1,fn3);

callbacks.fire( "footbar!" );//无输出

$.Callbacks()

一个多用途的回调列表对象,提供了强大的的方式来管理回调函数列表。

$.Callbacks()的内部提供了jQuery的$.ajax()$.Deferred() 基本功能组件。它可以用来作为类似基础定义的新组件的功能。

$.Callbacks() 支持的方法,包括 callbacks.add(),callbacks.remove(), callbacks.fire() and callbacks.disable().

语法

  • $.Callbacks([flags])

jQuery 1.7新增

参数说明

参数说明
flags可选String类型 一个用空格标记分隔的标志可选列表,用来改变回调列表中的行为。

flags可能的值:

  • once: 确保这个回调列表只执行( .fire() )一次(像一个递延 Deferred).
  • memory: 若之前调用过回调列表,添加新的回调函数,使用之前的参数立即执行最新添加到这个列表的回调函数 (像一个递延 Deferred).
  • unique: 确保回调列表中一个回调函数只能添加一次(所以在列表中没有重复的回调).
  • stopOnFalse: 当一个回调返回false 时中断调用

默认情况下,回调列表将像事件的回调列表可以多次触发。
flags空格标记分隔的取值是使用的$.Callbacks()内部的.done() 和 .fail()一个递延容器-它们都使用 $.Callbacks('memory once').
flags的代码实例说明,请转示例&说明 查看。

返回值

$.Callbacks()函数的返回值是Callbacks类型,返回该Callbacks对象封装的回调列表。

示例&说明

callbacks .add() 支持添加新的回调回调列表, 而callbacks.fire() 提供了一种用于处理在同一列表中的回调方法的途径.
相关的jQuery示例代码:

function fn1( value ) {
    console.log("fn1:"+ value );
}
function fn2( value ) {
    fn1("fn2 says: " + value);
    return false;
}

var callbacks = $.Callbacks();
callbacks.add( fn1 );
callbacks.fire( "foo!" );//fn1:foo!
callbacks.add( fn2 );
callbacks.fire( "bar!" );
/*  输出
    fn1:bar!
    fn1:fn2 says: bar!
*/

.remove(),用于从回调列表中删除一个特定的回调。下面是.remove() 使用的一个例子:

function fn1( value ) {
    console.log("fn1:"+ value );
}

function fn2( value ) {
    fn1("fn2 says: " + value);
    return false;
}

var callbacks = $.Callbacks();
callbacks.add( fn1 );

callbacks.fire( "foo!" );//fn1:foo!

callbacks.add( fn2 );


callbacks.fire( "bar!" );
/*  输出
    fn1:bar!
    fn1:fn2 says: bar!
*/

callbacks.remove( fn2 );

callbacks.fire( "foobar" );//fn1:foobar

$.Callbacks( “once” )示例说明:

function fn1( value ) {
    console.log("fn1:"+ value );
}

function fn2( value ) {
    fn1("fn2 says: " + value);
    return false;
}

//callbacks执行一次后就不在执行
var callbacks = $.Callbacks("once" );

callbacks.add( fn1 );
//第一次执行 
callbacks.fire( "foo!" );//fn1:foo!

//之后的回调函数都不再执行
callbacks.add( fn2 );
callbacks.fire( "bar!" );
callbacks.remove( fn2 );
callbacks.fire( "foobar" );

$.Callbacks( “memory” )示例说明:

function fn1( value ) {
    console.log("fn1:"+ value );
}
function fn2( value ) {
    fn1("fn2 says: " + value);
    return false;
}
function fn3( value ) {
    fn1("fn3 says: " + value);
    return false;
}
//callbacks将添加到这个列表的后面的最新的值立即执行调用任何回调 
var callbacks = $.Callbacks("memory" );

callbacks.add( fn1 );

//第一次执行 
callbacks.fire( "foo!" );//fn1:foo!

//若之前存在回掉列表调用即.fire(),立即执行最新添加的函数fn2,沿用上一次调用的参数
//若之前不存在回调函数调用即.fire(),则最新添加函数fn2也不发生调用
callbacks.add( fn2 );//fn1:fn2 says: foo!
callbacks.add( fn3 );//fn1:fn3 says: foo!
callbacks.fire( "bar!" );
/*
    输出:
    fn1:bar!
    fn1:fn2 says: bar!
    fn1:fn3 says: bar!
*/
callbacks.remove( fn2 );
callbacks.remove( fn3 );
callbacks.fire( "foobar" );//fn1:foobar

$.Callbacks( “unique” )示例说明:

function fn1( value ) {
    console.log("fn1:"+ value );
}

function fn2( value ) {
    fn1("fn2 says: " + value);
    return false;
}

//callbacks中去除重复添加的回调函数,确保不重复 
var callbacks = $.Callbacks("unique" );
callbacks.add( fn1 );
//第一次执行 
callbacks.fire( "foo!" );//fn1:foo!
//重复添加,$.Callbacks("unique" )设置回调列表不再次添加fn1 
callbacks.add( fn1 );
callbacks.add( fn2 );
callbacks.fire( "bar!" );
/*
    输出:
    fn1:bar!
    fn1:fn2 says: bar!
*/

callbacks.remove( fn2 );

callbacks.fire( "foobar" );//fn1:foobar

$.Callbacks( “stopOnFalse” )示例说明:

function fn1( value ) {
    console.log("fn1:"+ value );
    return false;
}

function fn2( value ) {
    fn1("fn2 says: " + value);
    return false;
}
//callbacks当一个回调返回false 时中断回调列表中回调函数的调用
var callbacks = $.Callbacks("stopOnFalse" );

callbacks.add( fn1 );

//第一次执行 
callbacks.fire( "foo!" );//fn1:foo!

callbacks.add( fn2 );

callbacks.fire( "bar!" );//fn1:bar!

callbacks.remove( fn2 );

callbacks.fire( "foobar" );//fn1:foobar

$.Callbacks 方法也可以被分离, 为方便起见应该有一个需要定义简写版本:

var callbacks = $.Callbacks(),
    add = callbacks.add,
    remove = callbacks.remove,
    fire = callbacks.fire;

add( fn1 );
fire( "hello world" );
remove( fn1 );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三知之灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值