рдЬрд┐рд╕ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдк рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рдереЗред рдпрд╛ рд╢реБрджреНрдз рдЬреЗрдПрд╕ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрдЯрди рд╕реЗ рдкреЙрдк-рдЕрдк рдХреИрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ

рд╢реБрдн рджреЛрдкрд╣рд░ рдореЗрд░рд╛ рдирд╛рдо рдмреЛрд░рд┐рд╕ рдЪреЗрд░реЗрдкреЛрдиреЛрд╡ рд╣реИ, рдореИрдВ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдФрд░ рдмрд┐рдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ред рд╕реАрдорд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ jquery рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрдЯрди рд╕реЗ рдПрдХ рд╣реА рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдерд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдХрд╛рд░реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдФрд░ рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬреЛ рдкрд╣рд▓реА рдХреНрд▓рд┐рдХ рдкрд░ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА, рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдЪрд╛рдПрдЧреА, рдХреЙрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛрдЧрд╛, рдЖрджрд┐ред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЕрдлрд╕реЛрд╕ рдирд╣реАрдВ рдерд╛ред рдмрд╛рдж рдореЗрдВ рдХреНрдпреЛрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ред рдореИрдВ рдЗрд╕ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдЯрд░реНрдирдХреА рд╕рдорд╛рдзрд╛рди рдореЗрдВ "рд▓рд┐рдкрдЯрд╛" рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдЧрд╛рддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрдерд╛рдкрдирд╛


рдЗрд╕ рддрд░рд╣ рдХреЗ "рдореЛрдбрд▓" рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рд░рд▓ рд╣реИред рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдпрд╣ рдХрд┐рд╕реА рднреА рдШрдЯрдирд╛ рдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЬрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╡рд╣рд╛рдВ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ github рдкрд░ рд▓рд┐рдВрдХ рд╣реИ

рдкреНрд░рд╛рд░рдВрдн


рдЙрд╕ рдкреГрд╖реНрда рдкрд░ рдЬрд┐рд╕ рдкрд░ рдЖрдкрдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ js рдореЗрдВ рд▓рд┐рдЦреЗрдВ:

new XMC({ bodyID: 'body', backgroundLayerID: 'wrapper', selector: 'data-type', selectorValue: 'openModalForm', btnId: 'mfClose', content: '', classListBg: ['zuzu', 'zaza'], classListBody: ['zuzu', 'zaza2'], classListBtn: ['zuzu', 'zaza3'], styleBg: { top: '0', left:'0', right: '0', bottom: '0', position: 'fixed', background: '#00000090', justifyContent: 'center', alignItems: 'center', zIndex: '6' }, styleBody: { minWidth: '200px', minHeight: '200px', background: '#ffffff', justifyContent: 'center', alignItems: 'center', }, btnStyle: { width: '40px', height: "40px", background: '#ffffff', display: 'flex', justifyContent: 'center', alignItems: 'center', position: 'absolute', top: '5%', right: '5%', cursor: 'pointer' } }); 

рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ


6 рдЖрд╡рд╢реНрдпрдХ рдмрд┐рдВрджреБ рд╣реИрдВ:

  • bodyID рдмреНрд▓реЙрдХ рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реЛрдЧреА
  • backgroundLayerID - dimming рдкрд░рдд рдЖрдИрдбреА
  • рдЪрдпрдирдХрд░реНрддрд╛ - html рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛ рд╕рднреА рдмрдЯрди рдкрд░ рд╣реЛрдЧреА рдЬреЛ рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧреА
  • selectorValue - рдЪрдпрдирдХрд░реНрддрд╛ рдорд╛рди
  • bntID - рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдХреА рдЖрдИрдбреА
  • рд╕рд╛рдордЧреНрд░реА - рдкрд╛рда рдпрд╛ HTML рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рдЕрдВрджрд░

рд╡реИрдХрд▓реНрдкрд┐рдХ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ:

  • classListBg, classListBody, classListBtn - рдХреНрд░рдорд╢рдГ рдбреЗрдорд┐рдВрдЧ рд▓реЗрдпрд░, рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдФрд░ рдХреНрд▓реЛрдЬ рдмрдЯрди рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕ рд╕рд░рдгрд┐рдпрд╛рдБ
  • styleBg, styleBody, btnStyle - рдбреИрдорд┐рдВрдЧ рд▓реЗрдпрд░ рдХреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдФрд░ рдХрд░реАрдм рдмрдЯрди, рдХреНрд░рдорд╢рдГ

рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛


рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЬреЛ рдЗрд╕ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдХрдИ рдмрдЯрди рд╕реЗ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред Js рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдФрд░ XMC (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреА рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХрд╣рд╛ рд╣реИ) рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 XMC.prototype.delegateClick = function () { var mf = this; window.addEventListener('click', function () { //     ,          if(event.target.hasAttribute(mf.selector) && event.target.getAttribute(mf.selector) === mf.selectorValue ){ mf.show(); //    mf.delegateClose(); //     } }, mf, false); }; 

рддрджрдиреБрд╕рд╛рд░, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЖрдкрдХреЛ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 var XMC = function (object) { /*   */ this.delegateClick(); } 

рд╡реИрд╕реЗ, рдПрдХ рд╕рдордп рдореЗрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реАрдЦрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЗрдЦ рдиреЗ рдореБрдЭреЗ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдорджрдж рдХреАред рдЗрд╕рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдлрд╛рд░реНрдо рдХреЗ рд▓рд┐рдП AJAX


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

 XMC.prototype.ajax = function () { var mf = this; var data = new Object(); //  ,    ,    data = JSON.stringify(data); var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function () { if(this.readyState == 4 && this.status == 200){ mf.body.innerHTML = this.responseText; mf.sendClickDelegate(mf.form); mf.i18n(); } }; xhttp.open('POST', localizationPreloader.adminUrl + "?action=my_action", true); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send("data="+data); return this; } 

рд╕реАрдПрдордПрд╕ рд╡рд░реНрдбрдкреНрд░реЗрд╕ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдЕрдиреБрд░реЛрдз рдХреЛрдб рдерд╛ред

рдкрд░рд┐рдгрд╛рдо


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

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдореЗрд░рд╛ рд▓реЗрдЦ рдЙрдкрдпреЛрдЧреА рд▓рдЧрд╛ рд╣реЛрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╣реИ

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


All Articles