jQuery.Callbacks () method
jQuery Misc Methods
Examples
Add a callback function to the list of $ .Callbacks
$ (Function () {
function fn1 ( value ) {
alert ( value );}
function fn2 ( value ) {
fn1 ( "fn2 says:" + value); return false;}
var callbacks = $ Callbacks ();. . callbacks add ( fn1 );
callbacks. fire ( "Foo!" );. Callbacks add ( fn2 );
callbacks. fire ( "Bar!" );})
try it"
Definition and Usage
$ .Callbacks () Refers to a multipurpose callback list of objects, providing a powerful way to manage the callback function column right.
Tip: $ .Callbacks in jQuery for internal use, such as .ajax, $ Deferred and other components provide functions for basic functionality. It can also be used in some components similar function, such as to develop their own plug-ins.
grammar
参数 |
描述 |
flags
|
可选。 String类型 一个用空格标记分隔的可选列表,用来改变回调列表中的行为 |
More examples
Here is .remove () to remove a specific callback from the callback list examples
Examples
$ (Function () {
function fn1 ( value ) {
alert ( value );}
function fn2 ( value ) {
fn1 ( "fn2 says:" + value); return false;}
var callbacks = $ Callbacks ();. . callbacks add ( fn1 );
callbacks. fire ( "Foo!" );. Callbacks add ( fn2 );
callbacks. fire ( "Bar!" );. Callbacks remove ( fn2 );
callbacks. fire ( "Foobar" );})
try it"
Supported Flags parameter
The flags parameter is $ .Callbacks () is an optional parameter, the structure of a space-delimited flags marked optional list, to change the callback list behavior (eg. $ .Callbacks ( 'Unique stopOnFalse')).
The following are the available flags:
参数 |
描述 |
once
|
确保这个回调列表只执行一次 |
memory
|
缓存上一次fire时的参数值,当add()添加回调函数时,直接用上一次的参数值立刻调用新加入的回调函数 |
unique
|
确保一次只能添加一个回调,不会重复添加 |
stopOnFalse
|
某个回调函数返回false之后中断后面的回调函数 |
Here is an example $ .Callbacks ( "once") of
Examples
$ (Function () {
function fn1 ( value ) {
alert ( value );}
function fn2 ( value ) {
fn1 ( "fn2 says:" + value); return false;}
var callbacks = $. Callbacks ( "Once" );. Callbacks add ( fn1 );. Callbacks fire ( "Foo" );. Callbacks add ( fn2 );. Callbacks fire ( "Bar" );. Callbacks remove ( fn2 );. Callbacks fire ( "Foobar" );
})
try it" Here is an example $ .Callbacks ( "memory") of
Examples
$ (Function () {
function fn1 ( value ) {
alert ( value );}
function fn2 ( value ) {
fn1 ( "fn2 says:" + value); return false;}
var callbacks = $. Callbacks ( "Memory" );. Callbacks add ( fn1 );. Callbacks fire ( "Foo" );. Callbacks add ( fn2 );. Callbacks fire ( "Bar" );. Callbacks remove ( fn2 );. Callbacks fire ( "Foobar" ); says: bar foobar * /
})
try it" Here is an example $ .Callbacks ( "unique") of
Examples
$ (Function () {
function fn1 ( value ) {
alert ( value );}
function fn2 ( value ) {
fn1 ( "fn2 says:" + value); return false;}
var callbacks = $. Callbacks ( "Unique" );. Callbacks add ( fn1 );. Callbacks fire ( "Foo" );. Callbacks add ( fn1 // Repeat addition
callbacks. add ( fn2 );. Callbacks fire ( "Bar" );. Callbacks remove ( fn2 );. Callbacks fire ( "Foobar" ); * /
})
try it" Here is an example $ .Callbacks ( "stopOnFalse") of
Examples
$ (Function () {
function fn1 ( value ) {
alert ( value ); Return false;}
function fn2 ( value ) {
fn1 ( "Fn2 says:" + value ); Return false;}
var callbacks = $. Callbacks ( "StopOnFalse" );. Callbacks add ( fn1 );. Callbacks fire ( "Foo" );. Callbacks add ( fn2 );. Callbacks fire ( "Bar" );. Callbacks remove ( fn2 );. Callbacks fire ( "Foobar" );
})
try it" $ .Callbacks () Supports a list of a plurality of flags (identification) not just one, there is a cumulative effect, like "&&."
Here is an example $ .Callbacks ( 'unique memory') of
Examples
$ (Function () {
function fn1 ( value ) {
alert ( value ); Return false;}
function fn2 ( value ) {
fn1 ( "Fn2 says:" + value ); Return false;}
var callbacks = $. Callbacks ( "Unique memory" );. Callbacks add ( fn1 );. Callbacks fire ( "Foo" );. Callbacks add ( fn1 // Repeat addition
callbacks. add ( fn2 );. Callbacks fire ( "Bar" );. Callbacks add ( fn2 );. Callbacks fire ( "Baz" );. Callbacks remove ( fn2 );. Callbacks fire ( "Foobar" ); says: bar baz fn2 says: baz foobar * /
})
try it" $ .Callbacks Method may also be separated, for example:
Examples
$ (Function () {
function fn1 ( value ) {
alert ( value );}
var ... callbacks = $ Callbacks ( ), add = callbacks add, remove = callbacks remove, fire = callbacks fire;. add ( fn1 ); Fire ( "Hello world" ); Remove ( fn1 );
})
try it"
$ .Callbacks, $ .Deferred And Pub / Sub
The general idea pub / sub (observer pattern) behind loose coupling and efficient communications for your application. Observers also known as a subscriber, which points to the observed object. Notify the user when an observer (Publisher) event occurs.
As $ .Callbacks () to create a presentation component, only the callback function list, you can achieve Pub / Sub system. The $ .Callbacks article as a queue can be made to the following way, to achieve the article publish and subscribe:
Examples
$ (Function () {
function fn1 ( value ) {
alert ( value ); Return false;}
function fn2 ( value ) {
fn1 ( "Fn2 says:" + value ); Return false;}
var topics = {};. jQuery Topic = function ( id ) {
var callbacks, method, topic = id && topics [ id ]; If (! Topic ) {
. callbacks = jQuery Callbacks (); topic = {
publish: callbacks fire, subscribe:. callbacks add, unsubscribe:. callbacks remove.
}; If ( id ) {
topics [ id ] = Topic;}
}
return // $. Topic ( "MailArrived" ). Subscribe ( fn1 );. $ Topic ( "MailArrived" ). Subscribe ( fn2 );. $ Topic ( "MailSent" ). Subscribe ( fn1 ); $. Topic ( "MailArrived" ). Publish ( "Hello world!" );. $ Topic ( "MailSent" ). Publish ( "Woo! Mail!" ); woo mail * /!!!!
})
try it" Further improve the use of $ .Deferreds, you can ensure that when a specific task is completed (or resolve), the publisher issued a notice to subscribers only. See the following sample code:
Examples
$ (Function () {
function fn1 ( value ) {
alert ( value ); Return false;}
function fn2 ( value ) {
fn1 ( "Fn2 says:" + value ); Return false;}
var topics = {};. jQuery Topic = function ( id ) {
var callbacks, method, topic = id && topics [ id ]; If (! Topic ) {
. callbacks = jQuery Callbacks (); topic = {
publish: callbacks fire, subscribe:. callbacks add, unsubscribe:. callbacks remove.
}; If ( id ) {
topics [ id ] = Topic;}
}
return // $. Topic ( "MailArrived" ). Subscribe ( fn1 );
var . dfd = $ Deferred (); //
var topic = $. Topic ( "MailArrived" );
dfd. done ( topic. publish );
dfd. resolve ( "I have been released!" );})
try it"
jQuery Misc Methods