JQuery 1.7 рдХреЗ рдмрд╣реБрдд рдкрд╣рд▓реЗ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдПрдХ рдирдпрд╛
рдХреЙрд▓рдмреИрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдЖрдЬ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ
jQuery.Callbacks рдкреНрд░рд▓реЗрдЦрди рдЗрд╕реЗ рдПрдХ рдмрд╣реБрдЙрджреНрджреЗрд╢реНрдпреАрдп рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди (рдХреЙрд▓рдмреИрдХ рдмрд╕ рдХреЙрд▓рдмреИрдХ рдХрд╣рд▓рд╛рддрд╛ рд╣реИ) рдФрд░ рдЗрд╕ рд╕реВрдЪреА рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рджреЗрдЦрд╛ рдЬрдм рдпрд╣ рдЕрднреА рднреА рдХреЗрд╡рд▓ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдерд╛, рдФрд░ рдореБрдЭреЗ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╢реБрд░реВ рдореЗрдВ рдЗрд╕рдХреЗ рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрдиреЗ рд░рд╣рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдереАрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдм рдХреЙрд▓рдмреИрдХ рдХреА рдПрдХ рдХрддрд╛рд░ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ
fire()
рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, jQuery рдХреА рдЯреАрдо рдиреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╡рдЬрди рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рдЕрдирд╛рд╡рд╢реНрдпрдХ / рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА" рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реБрдП рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рдХреЙрд▓рдмреИрдХ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рдореИрдВ рдЕрднреА рдЙрдкрд▓рдмреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЕрдВрдд рдореЗрдВ рдореИрдВ рдЗрд╕ рд╡рд╕реНрддреБ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕реБрдзрд╛рд░ рд▓рд┐рдЦреВрдВрдЧрд╛ред
рдирд┐рдпреБрдХреНрддрд┐
рдЗрд╕ рдирдП jQuery.Callbacks рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рдЕрдзреНрдпрдпрди рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред рдЕрдХреНрд╕рд░, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдлрд╝рдВрдХреНрд╢рди рдЬрдм рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреЗ рд╣реЛрдиреЗ рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдмрд╕реЗ рд╣рдбрд╝рддрд╛рд▓реА рдЙрджрд╛рд╣рд░рдг AJAX рдЕрдиреБрд░реЛрдз рд╣реИред рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЕрдХреНрд╕рд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрдИ (рдпрд╣ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ, рд╢рд╛рдпрдж рдПрдХ рдЬреЛрдбрд╝реЗ, рд╢рд╛рдпрдж рдПрдХ рджрд░реНрдЬрди, рдпрд╛ рд╢рд╛рдпрдж рдХреЛрдИ рдирд╣реАрдВ) - рдпрд╣ рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдФрд░ рд╕рд░рд▓
"рдСрдмреНрдЬрд░реНрд╡рд░" рдкреИрдЯрд░реНрди рд╣реИ ред рдФрд░ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╢реНрди рдореЗрдВ jQuery.Callbacks рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрдкрдпреЛрдЧреА рд╣реИред JQuery рдореЗрдВ, jQuery.Deferred рдФрд░ jQuery.ajax рдХреЗ рдЕрдВрджрд░ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕рдВрд╕реНрдХрд░рдг 1.7 рдХреЗ рдмрд╛рдж рд╕реЗ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, jQuery рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдЗрд╕ рд╡рд╕реНрддреБ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреЗ рдШрдЯрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред
рдирд┐рд░реНрдорд╛рддрд╛: jQuery.allbacks (рдЭрдВрдбреЗ)
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ, рдХреЙрд▓рдмреИрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЙрд▓рдмреИрдХ рд╕реВрдЪреА рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред
flags
рдкреИрд░рд╛рдореАрдЯрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╣рдо рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
var callbacks = $.Callbacks();
рдирд┐рд░реНрдорд┐рдд
callbacks
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдм
callbacks
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп рдпрд╣ рдирд┐рд╖рд┐рджреНрдз рдирд╣реАрдВ рдерд╛), рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ (рдХреНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рдХреЙрд▓ рдерд╛ рдпрд╛ рдЕрднреА рддрдХ) рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдРрд╕реЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЬреИрд╕реЗ
add()
,
remove()
,
fire()
, рдЖрджрд┐ рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рд╡реИрд╕реЗ, рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдг рдХрд╛ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рдирд┐рд░реНрдорд╛рддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП
new
рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ (рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡реНрдпрд░реНрде)ред
рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░рд╣ рд╕реЗ рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдпрд╛ рдирд╣реАрдВ:
if (obj instanceof $.Callbacks) { obj.add(fn); }
рдХреЗ рддрд╣рдд рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЕрдЧрд░ рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд▓реМрдЯ рдЖрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЬреНрдЮрд╛рдд рддрд░реАрдХреЛрдВ (рдпрд╛ рдПрдХ рд╕рд╛рде рдХрдИ) рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
if (obj.fire) { obj.add(fn); }
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░, рдПрдХ рдирд┐рдпрдорд┐рдд рдЬреЗрдПрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЙрдирдХреЗ рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рдирд┐рдЬреА рдЪрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдЗрд╕ рдЫрджреНрдо-рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдмрд╛рд╣рд░ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЫрджреНрдо-рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЗрд╕ рд╡рд╕реНрддреБ рдХреЗ рддрд░реАрдХреЗ рдХреЙрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - рдЬрд┐рд╕ рд╡рд╕реНрддреБ рд╕реЗ рд╡реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рдВрджрд░реНрдн рдмрджрд▓рдиреЗ рдХреА рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд╕реНрддреБ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╕рдм рдХреБрдЫ рдЕрднреА рднреА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдпрд╣
fire
рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдЪ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рд╕рдВрджрд░реНрдн рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕реВрдЪреА рд╕реЗ рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрджрд░реНрдн рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ
рдХреЛ рдЕрд╕рд╛рдЗрди
рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
var c = $.Callbacks(), obj = {}; obj.register = c.add; obj.register(function() { console.log('fired'); }); c.fire();
рдЭрдВрдбреЗ
рдиреЛрдЯ : рдЗрд╕рдХреЗ рдмрд╛рдж, " fire()
рдХреЙрд▓рд┐рдВрдЧ рдореЗрдердб fire()
рдореЗрдердб" рд╢рдмреНрдж рдХрд╛ рдЕрд░реНрде рд╣реИ, fireWith()
рдореЗрдердб рд╕рд╣рд┐рдд рд╕реВрдЪреА рд╕реЗ рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ред
flags
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдлрд╝реНрд▓реИрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рдХрд▓реНрдк рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдирд╛рдИ рдЧрдИ
callbacks
рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛рдо рдХрд░реЗрдЧреАред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЭрдВрдбреЗ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ:
рдПрдХ рдмрд╛рд░ - рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреЙрд▓рдмреИрдХ рдХреА рд╕реВрдЪреА рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╣реА рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рджреВрд╕рд░реА рдФрд░ рдмрд╛рдж рдХреА рдХреЙрд▓
fire()
рд╡рд┐рдзрд┐ рдЕрдирд┐рд░реНрдгрд╛рдпрдХ рд╣реЛрдЧреА (рдЬреИрд╕рд╛ рдХрд┐ рдЖрд╕реНрдердЧрд┐рдд рд╡рд╕реНрддреБ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рдпрджрд┐ рдпрд╣ рдзреНрд╡рдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдХрдИ рдмрд╛рд░
fire()
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореЗрдореЛрд░реА - рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдХреЙрд▓ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ
fire()
рдпрд╛рдж рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
fire()
рд╡рд┐рдзрд┐ (рдФрд░ рд╕реВрдЪреА рд╕реЗ рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ) рдФрд░ рддреБрд░рдВрдд рдХреЙрд▓рдмреИрдХ рдХреЛ рдЙрд╕реА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдпрджрд┐ рд╡реЗ
fire()
рдмрд╛рдж рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ
fire()
рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрд╕реНрдердЧрд┐рдд рд╡рд╕реНрддреБ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
рдЕрджреНрд╡рд┐рддреАрдп - рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдмреИрдХ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреЙрд▓рдмреИрдХ рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдмрд╛рд░-рдмрд╛рд░ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
stopOnFalse - рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реВрдЪреА рд╕реЗ рдХреЙрд▓рдмреИрдХ рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ
fire()
рдХреЗ рдЪрд╛рд▓реВ рд╕рддреНрд░
fire()
рдХреЙрд▓ рдХреЗ рднреАрддрд░
false
ред
fire()
рд▓рд┐рдП рдЕрдЧрд▓реА рдХреЙрд▓
fire()
рд╡рд┐рдзрд┐ рдПрдХ рдирдпрд╛ рдХреЙрд▓рдмреИрдХ рд╕реВрдЪреА рдирд┐рд╖реНрдкрд╛рджрди рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░рддреА рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рддрдм рддрдХ рдлрд┐рд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рд╕реВрдЪреА рдореЗрдВ рд╕реЗ рдПрдХ
false
рдпрд╛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ред
рддрд░реАрдХреЛрдВ
рдиреАрдЪреЗ рдореИрдВ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рддрд░реАрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреВрдВрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЧреЛрджреА рдореЗрдВ рдФрд░ рдЕрдЧрд▓реЗ рдЦрдВрдб рдореЗрдВ рдХреБрдЫ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рддрд░реАрдХреЗ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
callbacks.add (рдХреЙрд▓рдмреИрдХ) рд░рд┐рдЯрд░реНрди: рдХреЙрд▓рдмреИрдХ - рд╕реВрдЪреА рдореЗрдВ
рдХреЙрд▓рдмреИрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЖрдк рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рддрд░реНрдХреЛрдВ рдореЗрдВ рдХрдИ рдлрд╝рдВрдХреНрд╢рди (рдХрдИ рддрд░реНрдХ) рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рд╕рд░рдг (рдЖрдк рдПрдХ рд╕рд╛рде рджреЛрдиреЛрдВ) рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рднреА рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рддрд░реНрдХ (рдпрд╛ рд╕рд░рдгреА рддрддреНрд╡) рдЬреЛ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╡рд┐рдзрд┐ (рдпрд╣ рдФрд░ рдХреБрдЫ рдЖрдЧреЗ) рдЗрд╕рдХреЗ рдХреЙрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рдХрдИ рддрд░реАрдХреЛрдВ рдХреА рдХреЙрд▓ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ jQuery рдореЗрдВ рдкреНрд░рдерд╛рдЧрдд рд╣реИред
callbacks.remove (рдХреЙрд▓рдмреИрдХ) рд░рд┐рдЯрд░реНрди: рдХреЙрд▓рдмреИрдХ - рд╕реВрдЪреА рд╕реЗ рдХреЙрд▓рдмреИрдХ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рднрд▓реЗ рд╣реА рдХреЙрд▓рдмреИрдХ рджреЛ рдмрд╛рд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реЛ, рдпрд╣ рджреЛрдиреЛрдВ рдкрджреЛрдВ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдпрджрд┐ рдЖрдк рд╕реВрдЪреА рд╕реЗ рдХреБрдЫ рдХреЙрд▓рдмреИрдХ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдЪрд╛рд╣реЗ рдХрд┐рддрдиреА рдмрд╛рд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рдЖрдк рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ рдлрд╝рдВрдХреНрд╢рди рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рд╕рд░рдгрд┐рдпрд╛рдБ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЧреИрд░-рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рднреА рддрд░реНрдХреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
callbacks.has (рдХреЙрд▓рдмреИрдХ) рд░рд┐рдЯрд░реНрди: рдмреВрд▓рд┐рдпрди - рдЪреЗрдХрдмреИрдХ рд╕реВрдЪреА рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред
callbacks.empty () рд░рд┐рдЯрд░реНрди: рдХреЙрд▓рдмреИрдХ -
рдХреЙрд▓рдмреИрдХ рд╕реВрдЪреА рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рддрд╛ рд╣реИред
callbacks.disable () рд░рд┐рдЯрд░реНрди: рдХреЙрд▓рдмреИрдХ - рдХреЙрд▓рдмреИрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ "рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ" рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдЕрд╕рдлрд▓ рд╣реЛрдВрдЧреАред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рднреА рд╡рд┐рдзрд┐рдпрд╛рдВ рдмрд┐рд▓реНрдХреБрд▓ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддреА рд╣реИрдВ:
add
- рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ,
has
- рд╣рдореЗрд╢рд╛
false
рд▓реМрдЯрддрд╛
false
, рдЖрджрд┐ред
callbacks.disabled () рд░рд┐рдЯрд░реНрди: рдмреВрд▓рд┐рдпрди - рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЙрд▓рдмреИрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдХреНрд╖рдо рд╣реИ, рдХреЙрд▓рд┐рдВрдЧ
disable()
рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж
disable()
true
рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
callbacks.lock () рд░рд┐рдЯрд░реНрди: callbacks - рдХреЙрд▓рдмреИрдХ рд╕реВрдЪреА рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдХреЙрд▓рдмреИрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИред
рдореЗрдореЛрд░реА рдлреНрд▓реИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╡рд┐рдзрд┐ рдорд╛рдиреНрдп рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреЗрд╡рд▓ рдмрд╛рдж рдХреА рдХреЙрд▓ рдХреЛ
fire()
рд░реЛрдХрдирд╛ рд╣реИ
fire()
, рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣
disable()
рдХреЙрд▓рд┐рдВрдЧ
disable()
рдмрд░рд╛рдмрд░ рд╣реИред
рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ, рдпрд╣ рд╡рд┐рдзрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ: рдпрджрд┐ рдореЗрдореЛрд░реА рдлрд╝реНрд▓реИрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдпрд╛ fire()
рд╡рд┐рдзрд┐ рдХреЛ рдХрднреА рднреА рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдкрд┐рдЫрд▓реЗ рдХреЙрд▓рдмреИрдХ рд╕рддреНрд░ рдХреЛ рдЙрдирдореЗрдВ false
рдПрдХ false
рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдкрд░ рдмрд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ lock()
рдХреЙрд▓ disable()
рдХреЙрд▓ disable()
рдмрд░рд╛рдмрд░ рд╣реИ (рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдЕрдВрджрд░) рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ disabled()
рдореЗрдВ рдХреЙрд▓ true
рд╣реЛ рдЬрд╛рдПрдЧреА, рдЕрдиреНрдпрдерд╛ рдХреЗрд╡рд▓ рдмрд╛рдж рдХреА рдХреЙрд▓ fire()
рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЬрд╛рдПрдЧреА - рд╡реЗ рди рддреЛ рдХреЙрд▓рдмреИрдХ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХрд░реЗрдВрдЧреЗ, рди рд╣реА рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрд▓рдмреИрдХ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди ( рд╕реНрдореГрддрд┐ рдзреНрд╡рдЬ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ)ред
callbacks.locked () рд░рд┐рдЯрд░реНрди: рдмреВрд▓рд┐рдпрди - рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЙрд▓рдмреИрдХ рдСрдмреНрдЬреЗрдХреНрдЯ
lock()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
lock()
, рддреЛ
disable()
рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рднреА
true
рд╣реЛ рдЬрд╛рддрд╛
disable()
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
callbacks.fireWith ([рд╕рдВрджрд░реНрдн] [, args]) рд░рд┐рдЯрд░реНрди: рдХреЙрд▓рдмреИрдХ - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрджрд░реНрдн рдФрд░ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕реВрдЪреА рдореЗрдВ рд╕рднреА рдХреЙрд▓рдмреИрдХ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
рд╕рдВрджрд░реНрдн - рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрди (рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рдПрдХ рд╡рд╕реНрддреБ) рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЖрд░реНрдЧреНрд╕ - рдХреЙрд▓рдмреИрдХ рдХреЛ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА (рдЕрд░реНрдерд╛рддреН рдПрдХ рд╕рд░рдгреА)ред
callbacks.fire (рддрд░реНрдХ) рд░рд┐рдЯрд░реНрди: рдХреЙрд▓рдмреИрдХ - рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдХреЙрд▓ рд╕рдВрджрд░реНрдн рдФрд░ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕реВрдЪреА рдореЗрдВ рд╕рднреА рдХреЙрд▓рдмреИрдХ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
рддрд░реНрдХреЛрдВ -
рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА (рд╕рд░рдгреА рдирд╣реАрдВ, рдЬреИрд╕реЗ рдХрд┐
fireWith()
рд╡рд┐рдзрд┐ рдореЗрдВ)ред рдпрд╛рдиреА рдХреЙрд▓ рд╕рдВрджрд░реНрдн рдФрд░ рдХреЙрд▓рдмреИрдХ рддрд░реНрдХ
fire()
рд╡рд┐рдзрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдФрд░ рддрд░реНрдХ рд╣реИрдВред
рдЖрдк рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
var callbacks = $.Callbacks(), context = { test: 1 }; callbacks.add(function(p, t) { console.log(this.test, p, t); }); callbacks.fireWith(context, [ 2, 3 ]);
рд╕реВрдЪреА рд╕реЗ рдХреЙрд▓рдмреИрдХ рдХреЛ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдХреЙрд▓рдмреИрдХ рдХреЛ
рдПрдХ рдмрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж
, рд╕реВрдЪреА рдХреЛ рд╕рд╛рдлрд╝ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдпрджрд┐
рдореЗрдореЛрд░реА рдлрд╝реНрд▓реИрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛
false
рд╡рд╛рдкрд╕ рдХрд░рдХреЗ рдХреЙрд▓рдмреИрдХ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХреЙрд▓рдмреИрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ
disable()
рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЭрдВрдбреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
function fn1( value ){ console.log( value ); } function fn2( value ){ fn1("fn2 says:" + value); return false; }
$ред рдХреЙрд▓рдмреИрдХ ():
var callbacks = $.Callbacks(); callbacks.add( fn1 ); callbacks.fire( "foo" ); callbacks.add( fn2 ); callbacks.add( fn1 ); callbacks.fire( "bar" ); callbacks.remove( fn2 ); callbacks.fire( "foobar" ); console.log(callbacks.disabled());
рдХреЛрдИ рдзреНрд╡рдЬ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджрд┐рдпрд╛ - рдХрд╛рдлреА рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ред
$ред рдХреЙрд▓рдмреИрдХ ('рдПрдХ рдмрд╛рд░'):
var callbacks = $.Callbacks( "once" ); callbacks.add( fn1 ); callbacks.fire( "foo" ); callbacks.add( fn2 ); callbacks.add( fn1 ); callbacks.fire( "bar" ); callbacks.remove( fn2 ); callbacks.fire( "foobar" ); console.log(callbacks.disabled());
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ - рдПрдХ рдмрд╛рд░ рдЬрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛, рддреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖ, рдЪрд╛рд╣реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреБрдЫ рднреА рдХрд┐рдпрд╛ рд╣реЛ, рдХреНрдпреЛрдВрдХрд┐ рд╕реВрдЪреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдХреНрд╖рдо рд╣реИред
$ред рдХреЙрд▓рдмреИрдХ ('рдореЗрдореЛрд░реА'):
var callbacks = $.Callbacks( "memory" ); callbacks.add( fn1 ); callbacks.fire( "foo" ); callbacks.add( fn2 ); callbacks.add( fn1 ); callbacks.fire( "bar" ); callbacks.remove( fn2 ); callbacks.fire( "foobar" ); console.log(callbacks.disabled());
рдпрд╣рд╛рдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ - рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рдХреЙрд▓рдмреИрдХ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝ рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рддреБрд░рдВрдд рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╣рдо рдкреВрд░реА рд╕реВрдЪреА рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдХрд╣рддреЗ рд╣реИрдВред рдЙрд╕реА рд╕рдордп, рд╣рдордиреЗ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЛ рдмрд╛рд░ рдЬреЛрдбрд╝рд╛ - рдпрд╣ рджреЛ рдмрд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
$ред рдХреЙрд▓рдмреИрдХ ('рдЕрджреНрд╡рд┐рддреАрдп'):
var callbacks = $.Callbacks( "unique" ); callbacks.add( fn1 ); callbacks.fire( "foo" ); callbacks.add( fn2 ); callbacks.add( fn1 ); callbacks.fire( "bar" ); callbacks.remove( fn2 ); callbacks.fire( "foobar" ); console.log(callbacks.disabled());
рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди
fn1
рдХреЗ рджреЛрд╣рд░рд╛рдП рдЧрдП рдЬреЛрдбрд╝ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
$ред рдХреЙрд▓рдмреИрдХ ('рд╕реНрдЯреЙрдкрдСрдирдлреНрд▓реЗрд╕'):
var callbacks = $.Callbacks( "stopOnFalse" ); callbacks.add( fn1 ); callbacks.fire( "foo" ); callbacks.add( fn2 ); callbacks.add( fn1 ); callbacks.fire( "bar" ); callbacks.remove( fn2 ); callbacks.fire( "foobar" ); console.log(callbacks.disabled());
fn2
рдирд┐рд╖реНрдкрд╛рджрди рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐
false
рд▓реМрдЯрддрд╛
false
ред
рдпреЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдФрд░ рдЕрдм рдЖрдЗрдП рдзреНрд╡рдЬ рд╕рдВрдпреЛрдЬрди рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ - рдпрд╣ рдереЛрдбрд╝рд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛:
$ред рдХреЙрд▓рдмреИрдХ ('рдПрдХ рдмрд╛рд░ рдореЗрдореЛрд░реА'):
var callbacks = $.Callbacks( "once memory" ); callbacks.add( fn1 ); callbacks.fire( "foo" ); callbacks.add( fn2 ); callbacks.add( fn1 ); callbacks.fire( "bar" ); callbacks.remove( fn2 ); callbacks.fire( "foobar" ); console.log(callbacks.disabled());
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреЗрд╡рд▓ рдкрд╣рд▓реА
fire()
рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдирдИ рдХреЙрд▓рдмреИрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкрд╣рд▓реЗ
fire()
рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдирдХреЗ рддрддреНрдХрд╛рд▓ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛ред
$ред рдХреЙрд▓рдмреИрдХ ('рдПрдХ рдмрд╛рд░ рдореЗрдореЛрд░реА рдпреВрдирд┐рдХ'):
var callbacks = $.Callbacks( "once memory unique" ); callbacks.add( fn1 ); callbacks.fire( "foo" ); callbacks.add( fn2 ); callbacks.add( fn1 ); callbacks.fire( "bar" ); callbacks.remove( fn2 ); callbacks.fire( "foobar" ); console.log(callbacks.disabled());
рдпрд╣рд╛рдВ рдкрд░рд┐рдгрд╛рдо рд╕рдорд╛рди рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╣рдордиреЗ
рдЕрджреНрд╡рд┐рддреАрдп рдзреНрд╡рдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рджреЛ рдмрд╛рд░
fn1
рдЬреЛрдбрд╝рддреЗ
fn1
, рджреВрд╕рд░реА рдмрд╛рд░ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж
рдПрдХ рдмрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде, рд╕реВрдЪреА рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░
рдореЗрдореЛрд░реА рдлрд╝реНрд▓реИрдЧ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреЙрд▓рдмреИрдХ рдХреЗ рдмрд╛рдж рдХреЗ рдЬреЛрдбрд╝ рд╕реВрдЪреА рдореЗрдВ рд░рдЦреЗ рдмрд┐рдирд╛ рдЙрдирдХрд╛ рддрддреНрдХрд╛рд▓ рдирд┐рд╖реНрдкрд╛рджрди рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЪреВрдВрдХрд┐ рд╕реВрдЪреА рдЦрд╛рд▓реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣рдореЗрд╢рд╛ рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдзреНрд╡рдЬ рдПрдХ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдПрдЧрд╛ рдЬрдм рдЖрдк рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрдИ рдХреЙрд▓рдмреИрдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рдмреАрдЪ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╡рд╛рд▓реЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рдХреЛрдб рдореЗрдВ 4 рд╡реАрдВ рдкрдВрдХреНрддрд┐ рдХреЛ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░
fn2
рд╣реИрдВ, рддреЛ
fn2
рдЕрднреА рднреА рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛
fn2
(рдФрд░
рдЕрджреНрд╡рд┐рддреАрдп рдзреНрд╡рдЬ рдХреЗ рдмрд┐рдирд╛, рддреАрди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ рдмрд╛рд░):
callbacks.add( fn2, fn2, fn2 );
$ред рдХреЙрд▓рдмреИрдХ ('рдПрдХ рдмрд╛рд░ рдореЗрдореЛрд░реА рд╕реНрдЯреЙрдкрдСрдирд▓реНрд╕'):
var callbacks = $.Callbacks( "once memory stopOnFalse" ); callbacks.add( fn1 ); callbacks.fire( "foo" ); callbacks.add( fn2 ); callbacks.add( fn1 ); callbacks.fire( "bar" ); callbacks.remove( fn2 ); callbacks.fire( "foobar" ); console.log(callbacks.disabled());
рдмрд╛рдж рдХреЗ рд╕рднреА рдХреЙрд▓рдмреИрдХ рдХреЛ
false
рдмреНрд▓реЙрдХ рдХрд░рдирд╛ рдФрд░ рдпрджрд┐ рдПрдХ
рдмрд╛рд░ рдзреНрд╡рдЬ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдХреЙрд▓рдмреИрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░ рджреЗрддрд╛ рд╣реИред
рдореИрдВ рдЭрдВрдбреЗ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдпреЛрдЬрдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк (рдмрд╣реБрдд рд╕рд░рд▓ рдирд╣реАрдВ) рдЪреБрдирдиреЗ рдФрд░ рдХреЙрд▓рдмреИрдХ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рд╢реЗрд╖ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд┐рдХреНрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ:
http://jsfiddle.net/zandroid/JXqzB/рд╕реБрдзрд╛рд░ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛
рд╕реБрдзрд╛рд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рд╕рднреА рдЕрдирд┐рд╡рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐, рд╢рд╛рдпрдж, рдХреБрдЫ рд╣рдж рддрдХ рджреВрд░-рджреВрд░ рддрдХ, рд╕рдЦреНрддреА рд╕реЗ рдиреНрдпрд╛рдп рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рд╕реБрдзрд╛рд░ рдХрд╛ рд╡рд┐рдЪрд╛рд░
fire()
рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЙрд▓рдмреИрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд┐рдЦреЗрдВ:
(function($, undefined){ $.FCallbacks = function(flags, fns) { var i = $.type(flags) === 'string' ? 1 : 0, callbacks = $.Callbacks(i ? flags : undefined); callbacks.add(Array.prototype.slice.call(arguments, i)) return $.extend(callbacks.fire, callbacks, { fcallbacks: true }); }; })(jQuery);
рдФрд░ рдЖрдЧреЗ рдХреА рд╣рд▓рдЪрд▓ рдХреЗ рдмрд┐рдирд╛, рдЖрдЗрдП рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
function fn1(p1, p2) { console.log('fn1 says:', this, p1, p2); } function fn2(p1, p2) { console.log('fn2 says:', this, p1, p2); } var callbacks = $.FCallbacks('once', fn1, rn2); callbacks.add(fn2); callbacks(2, 3);
рд╕рд╛рде рд╣реА, рдирдП "рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░" рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрд▓ рдХреЛ
add()
рдмрд┐рдирд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЙрд▓рдмреИрдХ рдХреЛ рддреБрд░рдВрдд рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рднреА рдерд╛ред
рдЦреИрд░, рдХрд╛рдо рдкрд░:
jsfiddle.net/zandroid/RAVtFрдЖрдЧрд╛рдореА рдЫреБрдЯреНрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдпреБрдкреАрдбреА:рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдЕрднреА рднреА рд╡реНрдпрд░реНрде рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╕реНрддреБ jQuery рдХреЗ рдЕрдВрджрд░ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред "рдмрдиреЗ рд╣реБрдП рд╕реНрдердЧрд┐рдд - рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рджреЛрд╣рд░реА рд╣реИ" рдпрд╛ "рдЗрд╕ рдХреЙрд▓рдмреИрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ - рдХреЗрд╡рд▓ jQuery рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЕрдзрд┐рдХ рд╡рдЬрдирджрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрд╕рд▓реА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ "- рдпреЗ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рд╣реИрдВ рдорд╛рдорд▓реЗ рдХреЗ рд╕рд╛рд░ рдХреЛ рд╕рдордЭрдирд╛ред рдиреАрдЪреЗ, рдореИрдВ рдЗрд╕ рдмрд┐рдВрджреБ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ
рдХреЙрд▓рдмреИрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдм
рдмрд╣реБрдд рд╕рд╛рд░реЗ jQuery 1.7+ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред рджреЗрдЦреЗрдВ, рдЗрд╕ рдкреНрд░рд╢реНрди рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдФрд░ рддрд░реНрдХ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ
$.ajax()
рдкрджреНрдзрддрд┐ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рдереА, рдЬреЛ рдЗрд╕рдХреА рдкреНрд░рдХреГрддрд┐ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд Deferred рдкрд░ рдРрдб-рдСрди рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ - рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдХреЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛, рдЗрд╕реЗ рдореБрдЦреНрдп
$.ajax()
рдХреЛрдб (рдкреБрди: рдЙрдкрдпреЛрдЧ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд░рд▓реАрдХрд░рдг рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд▓рд┐рдП
$.ajax()
рд╕реЗ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛ред рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЗрд╕ рдХреЛрдб рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП (рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рджреЗрдВ) - рдпрд╣
$.Deferred
рдмрд╛рд╣рд░ рд╣реЛ рдЧрдпрд╛ред
рдмрджрд▓реЗ рдореЗрдВ,
$.Deferred
рд╢реБрд░реВ рдореЗрдВ рджреЛ рд╣реЛрддреЗ рд╣реИрдВ (
done()
рдФрд░
fail()
, рдФрд░ рдЕрдм рдХреЙрд▓рдмреИрдХ рдкрд░ рддреАрди (+ рдЕрднреА рднреА
progress()
) рдРрдб-рдСрди рд╣реИрдВ, рдЬрд┐рд╕реЗ
$.Deferred
рдЖрдВрддрд░рд┐рдХ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдлрд┐рд░, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЗрд╕ рдХреЛрдб рдХреЛ
$.Deferred
рд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдпрд╛ рдФрд░ рдЕрд▓рдЧ рдХрд┐рдпрд╛ред рдмрд╛рдж рд╡рд╛рд▓реЗ рдХреЛ
$.Callbacks
(рд╡реИрд╕реЗ,
$.Deferred
рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдкрдардиреАрдп рд╣реЛ рдЧрдпрд╛) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖: рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреЗ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдХреЛ рдирдИ "рдмреЗрдХрд╛рд░" рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдореМрдЬреВрджрд╛ рдЖрдВрддрд░рд┐рдХ рдХреЛрдб рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдорд╛рдзреНрдпрдорд┐рдХ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рдХрдо рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред рдФрд░ рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк
$.ajax()
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЖрдк
$.Deferred
рдФрд░ рдЗрд╕рд▓рд┐рдП
$.Callbacks
ред
$.Callbacks
ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред