1
- <!doctype html>
2
- < html >
3
- < head >
4
- < meta http-equiv ="Content-type " content ="text/html; charset=utf-8 "/>
5
- <!-- // <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js" type="text/javascript"></script> -->
6
- < script type ="text/javascript " src ="jquery-2.1.1.js "> </ script >
7
- < title > 回调函数</ title >
8
- </ head >
9
- < body >
10
-
11
- < ul >
12
- < li > list item 1</ li >
13
- < li > list item 2</ li >
14
- < li > list item 3</ li >
15
- < li > list item 4</ li >
16
- < li > list item 5</ li >
17
- </ ul >
18
- < p > a paragraph</ p >
19
-
20
- < script type ="text/javascript ">
21
-
22
-
23
-
24
- function Callbacks ( options ) {
25
- var list = [ ] ;
26
- var self ;
27
- var firingStart ;
28
- var memory ;
29
-
30
- function _fire ( data ) {
31
- memory = options === 'memory' && data ;
32
- firingIndex =
33
- firingStart || 0 ;
34
- firingStart = 0 ;
35
- firingLength = list . length ;
36
- for ( ; list && firingIndex < firingLength ; firingIndex ++ ) {
37
- if ( list [ firingIndex ] ( data ) === false && options === 'stopOnFalse' ) {
38
- break ;
39
- }
40
- }
41
- }
42
-
43
- self = {
44
- add : function ( fn ) {
45
- var start = list . length ;
46
- if ( options == 'unique' ) {
47
- if ( - 1 === list . indexOf ( fn ) ) {
48
- list . push ( fn )
49
- }
50
- } else {
51
- list . push ( fn )
52
- }
53
- if ( memory ) {
54
- firingStart = start ; //获取最后一值
55
- _fire ( memory ) ;
56
- }
57
- } ,
58
- fire : function ( args ) {
59
- if ( list ) {
60
- _fire ( args )
61
- }
62
- }
63
- }
64
- return self ;
65
- }
66
-
67
- function fn1 ( value ) {
68
- console . log ( value ) ;
69
- return false ;
70
- }
71
-
72
- function fn2 ( value ) {
73
- fn1 ( "fn2 says: " + value ) ;
74
- // return false;
75
- }
76
-
77
- var callbacks = Callbacks ( "stopOnFalse" ) ;
78
- callbacks . add ( fn1 ) ;
79
- callbacks . fire ( "foo" ) ;
80
-
81
- callbacks . add ( fn2 ) ;
82
- callbacks . fire ( "bar" ) ;
83
-
84
- // callbacks.remove(fn2);
85
- // callbacks.fire("foobar")
86
-
87
-
88
-
89
- // function fn1(val) {
90
- // console.log('fn1 says ' + val);
91
- // }
92
-
93
- // function fn2(val) {
94
- // console.log('fn2 says ' + val);
95
- // }
96
-
97
- // function fn3(val) {
98
- // console.log('fn3 says ' + val);
99
- // }
100
- // var cbs = Callbacks('memory');
101
-
102
- // cbs.add(fn1);
103
- // cbs.fire('foo');
104
-
105
- // console.log('..........')
106
- // cbs.add(fn2);
107
-
108
- // cbs.fire('bar');
109
-
110
- // console.log('..........')
111
- // cbs.add(fn3);
112
- // cbs.fire('aaron');
113
-
114
-
115
-
116
- </ script >
117
- </ body >
1
+ <!doctype html>
2
+ < html >
3
+ < head >
4
+ < meta http-equiv ="Content-type " content ="text/html; charset=utf-8 "/>
5
+ <!-- // <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js" type="text/javascript"></script> -->
6
+ < script type ="text/javascript " src ="jquery-2.1.1.js "> </ script >
7
+ < title > 回调函数</ title >
8
+ </ head >
9
+ < body >
10
+
11
+ < ul >
12
+ < li > list item 1</ li >
13
+ < li > list item 2</ li >
14
+ < li > list item 3</ li >
15
+ < li > list item 4</ li >
16
+ < li > list item 5</ li >
17
+ </ ul >
18
+ < p > a paragraph</ p >
19
+
20
+ < script type ="text/javascript ">
21
+
22
+
23
+
24
+ function Callbacks ( options ) {
25
+ var list = [ ] ;
26
+ var self ;
27
+ var firingStart ;
28
+ var memory ;
29
+
30
+ function _fire ( data ) {
31
+ memory = options === 'memory' && data ;
32
+ firingIndex =
33
+ firingStart || 0 ;
34
+ firingStart = 0 ;
35
+ firingLength = list . length ;
36
+ for ( ; list && firingIndex < firingLength ; firingIndex ++ ) {
37
+ if ( list [ firingIndex ] ( data ) === false && options === 'stopOnFalse' ) {
38
+ break ;
39
+ }
40
+ }
41
+ }
42
+
43
+ self = {
44
+ add : function ( fn ) {
45
+ var start = list . length ;
46
+ if ( options == 'unique' ) {
47
+ if ( - 1 === list . indexOf ( fn ) ) {
48
+ list . push ( fn )
49
+ }
50
+ } else {
51
+ list . push ( fn )
52
+ }
53
+ if ( memory ) {
54
+ firingStart = start ; //获取最后一值
55
+ _fire ( memory ) ;
56
+ }
57
+ } ,
58
+ fire : function ( args ) {
59
+ if ( list ) {
60
+ _fire ( args )
61
+ }
62
+ }
63
+ }
64
+ return self ;
65
+ }
66
+
67
+ function fn1 ( value ) {
68
+ console . log ( value ) ;
69
+ return false ;
70
+ }
71
+
72
+ function fn2 ( value ) {
73
+ fn1 ( "fn2 says: " + value ) ;
74
+ // return false;
75
+ }
76
+
77
+ var callbacks = Callbacks ( "stopOnFalse" ) ;
78
+ callbacks . add ( fn1 ) ;
79
+ callbacks . fire ( "foo" ) ;
80
+
81
+ callbacks . add ( fn2 ) ;
82
+ callbacks . fire ( "bar" ) ;
83
+
84
+ // callbacks.remove(fn2);
85
+ // callbacks.fire("foobar")
86
+
87
+
88
+
89
+ // function fn1(val) {
90
+ // console.log('fn1 says ' + val);
91
+ // }
92
+
93
+ // function fn2(val) {
94
+ // console.log('fn2 says ' + val);
95
+ // }
96
+
97
+ // function fn3(val) {
98
+ // console.log('fn3 says ' + val);
99
+ // }
100
+ // var cbs = Callbacks('memory');
101
+
102
+ // cbs.add(fn1);
103
+ // cbs.fire('foo');
104
+
105
+ // console.log('..........')
106
+ // cbs.add(fn2);
107
+
108
+ // cbs.fire('bar');
109
+
110
+ // console.log('..........')
111
+ // cbs.add(fn3);
112
+ // cbs.fire('aaron');
113
+
114
+
115
+
116
+ </ script >
117
+ </ body >
118
118
</ html >
0 commit comments