JQuery рд╡рд┐рдЬреЗрдЯ рдХреЗ рд╕рд╛рде рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╕рдВрдЧрдарди

рд╕рдорд╕реНрдпрд╛


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЖрдЧреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╛ рд╕рд╣реА рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЧрдпрд╛ред рдЪреВрдВрдХрд┐ рдпрд╣ "рд╡реЗрдм рдЙрджреНрдпреЛрдЧ" рдореЗрдВ рдкрд╣рд▓рд╛ рдЕрдиреБрднрд╡ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЯреБрдХрдбрд╝реЗ рдХреА рдЦреЛрдЬ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВ рд╕рд╣реА рд╕рдВрдЧрдарди рдФрд░ jQuery рдХреЛрдб рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреА рджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдирд┐рд░реНрдгрдп


рдореМрдЬреВрджрд╛ рдлреИрд╢рди рд░реБрдЭрд╛рдиреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдкреИрдЯрд░реНрди рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧред рдЙрдирдХрд╛ рд╕рдВрдЧрдарди рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
- "рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░" (рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдпрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ)
- рдмреЗрд╕ рдХреНрд▓рд╛рд╕ (рдЖрдзрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рд╡рд╛рд▓реА рд╕рдВрд░рдЪрдирд╛)
- рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╡рд░реНрдЧ (рдореВрд▓ рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реАрдХреЛрдВ рд╕реЗ рдпреБрдХреНрдд рд╕рдВрд░рдЪрдирд╛)ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк jQuery рдХреЛ OOP рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХрдо рд╕реЗ рдХрдо рдмрд╣реБрд░реВрдкрддрд╛ рдореМрдЬреВрдж рд╣реИред
рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдВрд░рдЪрдирд╛рдУрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, "рдирд┐рд░реНрдорд╛рддрд╛" рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдирд┐рдореНрди рдХреЛрдб рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:

$ .wget = рдлрд╝рдВрдХреНрд╢рди (рдирд╛рдо, рдСрдмреНрдЬреЗрдХреНрдЯ) {
$ .fn [рдирд╛рдо] = рдлрд╝рдВрдХреНрд╢рди (рд╡рд┐рдХрд▓реНрдк) {
рдпрд╣ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВред
var рдЙрджрд╛рд╣рд░рдг = $ .data (рдпрд╣, рдирд╛рдо); // рдПрдХ рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдпрджрд┐ рдпрд╣ рдЕрдиреНрдпрдерд╛ рдПрдХ рдЦрд╛рд▓реА рд╡рд╕реНрддреБ рдмрдирд╛рдИ рдЧрдИ рдереА

рдЕрдЧрд░ (рдЙрджрд╛рд╣рд░рдг) {
рдЙрджрд╛рд╣рд░рдг = $ .рдбрд╛рдЯрд╛ (рдпрд╣, рдирд╛рдо, Object.create (рдСрдмреНрдЬреЗрдХреНрдЯ)); // рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдБ
рдЙрджрд╛рд╣рд░рдгред (рд╡рд┐рдХрд▓реНрдк, рдпрд╣);} // рдЖрд░рдВрднреАрдХрд░рдг
});
};
};

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рддрдВрддреНрд░ рд╕рд░рд▓ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдп рдХреБрдВрдЬреА (рдирд╛рдо) рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рддрдерд╛рдХрдерд┐рдд рдХреИрд╢рд┐рдВрдЧ рдХреЛ рдЙрдмрд╛рд▓рддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдЬрдм рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреНрд░рд┐рдпрд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рд▓рдВрдмрд┐рдд рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕рдВрднрд╡ рд╣реИред
рдЕрдм рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдХреИрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдЗрдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ:

var BaseCl = {
init: рдлрд╝рдВрдХреНрд╢рди (рд╡рд┐рдХрд▓реНрдк, рддрддреНрд╡) {
this.options = $ .extend ({}, this.options, рд╡рд┐рдХрд▓реНрдк), // "glues" рд╡рд┐рдХрд▓реНрдк рд╡рд┐рдХрд▓реНрдк
this.element = $ (element); // рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рд╕рд╣реЗрдЬреЗрдВ
}

рд╡рд┐рдХрд▓реНрдк: {
рдирд╛рдо: ''
}

func1: рдлрд╝рдВрдХреНрд╢рди (рд╡реИрд▓) {
...
}
func2: рдлрд╝рдВрдХреНрд╢рди (рд╡реИрд▓) {
...
}
};

рдХрдХреНрд╖рд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ init рд╡рд┐рдзрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдФрд░ рдЕрдВрддрд┐рдо рд╡рд░реНрдЧ, рдЬреЛ рдЖрдзрд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ, рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ:

var ChildCl = BaseCl.extend ({
init: рдлрд╝рдВрдХреНрд╢рди (рд╡рд┐рдХрд▓реНрдк, рддрддреНрд╡) {
this.options = $ .extend ({}, this.options, рд╡рд┐рдХрд▓реНрдк), // "glues" рд╡рд┐рдХрд▓реНрдк рд╡рд┐рдХрд▓реНрдк
this.element = $ (element); // рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рд╕рд╣реЗрдЬреЗрдВ
}

рд╡рд┐рдХрд▓реНрдк: {
рдирд╛рдо: ''
}

func3: рдлрд╝рдВрдХреНрд╢рди () {
...
}
func4: рдлрд╝рдВрдХреНрд╢рди () {
...
}
});

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╡рд░реНрдЧ рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╣реИред рдЪреВрдВрдХрд┐ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╢реНрд░реЗрдгреА рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдЖрд░рдВрднрд┐рдХ рд╡рд┐рдзрд┐ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреА рдЧрдИ рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪрд╛рдЗрд▓реНрдбрдХреНрд▓рд┐рдХ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╢рд░реАрд░ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рдФрд░ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдРрд╕реА рд╡рд┐рдзрд┐рдпрд╛рдБ рджреВрдВрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рдирд┐рд░реНрдорд┐рдд рд╡рд╕реНрддреБрдУрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ:

$ .getget ('рдмрдЪреНрдЪрд╛', ChildCl);

$ (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝)ред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА (рдлрд╝рдВрдХреНрд╢рди) ({

// рдРрд╕реЗ рд╣реА рдХреЙрд▓ рдХрд░реЗрдВ
$ ('# div')ред рдмрдЪреНрдЪрд╛ ({рдирд╛рдо: 'рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб'});
var chld = $ ('# div')ред рдбреЗрдЯрд╛ ('рдмрдЪреНрдЪрд╛');
chld.func1 ('');
chld.func3 ();

// рдпрд╛ рддреЛ
$ ('# div')ред рдмрдЪреНрдЪрд╛ ({рдирд╛рдо: 'рдирд░рдХ'});
$ ('# div')ред рдмрдЪреНрдЪрд╛ ('func1', '');

});

рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдФрд░ рдХреЛрдб рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рд░рд┐рдлреИрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреАред

Source: https://habr.com/ru/post/In140009/


All Articles