3.7 jQuery的回调支持 3.7.1 回调支持的基本用法

3.7 jQuery的回调支持

jQuery 1.7开始,jQuery提供了回调支持,这使得开发者能以一种更简单、高效的方式管理回调函数。

3.7.1 回调支持的基本用法

如何创建Callbacks对象

jQuery提供了以下方法创建Callbacks对象。

方法 描述
jQuery.Callbacks(flags) 根据创建的flags创建并返回Callbacks对象,Callbacks对象表示一个回调函数列表

得到回调函数列表之后,接下来就可以利用该回调函数列表来管理回调函数了。

程序示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!DOCTYPE html>
<html>

<head>
<meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> 回调支持 </title>
</head>

<body>
<script type="text/javascript" src="../jquery-3.1.1.js">
</script>
<script type="text/javascript">
// 定义两个简单的函数
function fn1(value) {
document.writeln("fn1函数输出:" + value + "<br />");
}
function fn2(value) {
document.writeln("fn2函数输出:" + value + "<br />");
return false;
}
// 创建一个回调函数列表
var callbacks = $.Callbacks();
// 向回调函数列表中添加第一个回调函数
callbacks.add(fn1);
// 触发回调函数列表中的所有回调函数(只有fn1被触发)
callbacks.fire("疯狂前端开发");
// 再次向回调函数列表中添加一个回调函数
callbacks.add(fn2);
document.writeln("<hr/>");
// 触发回调函数列表中的所有回调函数(fn1、fn2被触发)
callbacks.fire("~~疯狂Java~~");
// 从回调函数列表中删除fn1函数
callbacks.remove(fn1);
document.writeln("<hr/>");
// 触发回调函数列表中的所有回调函数(只有fn2被触发)
callbacks.fire("fkjava.org");
</script>
</body>

</html>

该程序中使用$.Callbacks()方法创建一个Callbacks 对象(回调函数列表),接下来

  • 程序既可使用add()方法向该Callbacks对象添加回调函数;
  • 也可使用remove()方法从Callbacks对象中删除回调函数;
  • 还可使用fire()方法触发Callbacks对象中的所有回调函数。

Callbacks对象方法

从上面的程序可以看出,Callbacks 对象是一种简单有效的回调函数管理方式。Callbacks对象提供了以下几种方法来管理回调函数。

添加或删除回调函数到Callbacks对象中

方法 描述
add(callbacks) 将一个或多个回调函数添加到Callbacks对象中。callbacks参数表示将要添加的回调函数或回调函数数组。
remove(callbacks) Callbacks 对象中删除一个或多个回调函数。callbacks 参数表示将要被删除的回调函数或回调函数数组。
empty() 清空Callbacks对象中的所有回调函数。

执行Callbacks对象中的所有回调方法

方法 描述
fire(arguments) 使用指定参数arguments激发Callbacks对象中所有回调函数。

判断方法

方法 描述
has(callback) 判断Callbacks对象中是否包含callback回调函数。
fired() 判断Callbacks对象中的回调函数是否被调用了至少一次。
locked() 判断Callbacks对象是否处于锁定状态。

禁用或锁定Callbacks对象

方法 描述
disable() 禁用Callbacks对象。
lock() Callbacks对象锁定在当前状态。