Latest web development tutorials

jQuery.Callbacks () method

jQuery Misc Methods 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 ); // Output: foo! callbacks. fire ( "Foo!" );. Callbacks add ( fn2 ); // Output: bar !, fn2 says: bar! 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

$.Callbacks( flags )

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


Examples

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 ); // Output: foo! callbacks. fire ( "Foo!" );. Callbacks add ( fn2 ); // Output: bar !, fn2 says: bar! callbacks. fire ( "Bar!" );. Callbacks remove ( fn2 ); // Output only foobar, fn2 has been removed. 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" ); / * Output only: foo * / })

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" ); / * Output: foo fn2 says: foo bar fn2 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" ); / * Output: foo bar fn2 says: bar 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" ); / * Output: foo bar 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" ); / * Output: foo fn2 says: foo bar fn2 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 ); / * Output: hello world * / })

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;}; // subscribers $. Topic ( "MailArrived" ). Subscribe ( fn1 );. $ Topic ( "MailArrived" ). Subscribe ( fn2 );. $ Topic ( "MailSent" ). Subscribe ( fn1 ); // Publisher $. Topic ( "MailArrived" ). Publish ( "Hello world!" );. $ Topic ( "MailSent" ). Publish ( "Woo! Mail!" ); / * Output: hello world fn2 says: hello world 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;}; // Subscribe mailArrived notice $. Topic ( "MailArrived" ). Subscribe ( fn1 ); // Create a new object alternative delay $ .Deferreds var . dfd = $ Deferred (); // define a new article (not directly release) var topic = $. Topic ( "MailArrived" ); // When the delay is accepted, an announcement to the subscribers dfd. done ( topic. publish ); / * Here will be passed back to the subscriber's message delay is accepted, it is possible to integrate the complex procedures (for example, waiting for an Ajax call is completed), so in fact only released once the message. * / // Completed. dfd. resolve ( "I have been released!" );})

try it"


jQuery Misc Methods jQuery Misc Methods