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

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпреЛрдВ рдФрд░ рдХреНрдпреЛрдВ?
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВ:
- рдХреНрдпрд╛ рдШрдЯрдирд╛ рд╣реИ;
- рд╡рд┐рддрд░рдг рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ;
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдбреЛрдо рд╕реНрддрд░ 2 рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг;
рдФрд░ рдЕрдВрдд рдореЗрдВ: рдХреНрдпреЛрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред
рдШрдЯрдирд╛
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ HTML рдШрдЯрдирд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХреБрдЫ рд╣реБрдЖ рд╣реИред рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╢реНрд░реЛрддрд╛рдУрдВ (рд╢реНрд░реЛрддрд╛рдУрдВ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдРрд╕реЗ рд╣реИрдВрдбрд▓рд░ рдЬреЛ рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрддреЗ рд╣реИрдВред
рдШрдЯрдирд╛ рдХрд╛ рдкреНрд░рдЪрд╛рд░
рдЖрджреЗрд╢ред рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓: рдпрд╣ рд╕рдордЭрдирд╛ рдХрд┐ рдШрдЯрдирд╛ рдХреЗ рдХрд┐рд╕ рднрд╛рдЧ рдореЗрдВ рдкреЗрдЬ рдХрд┐рд╕ рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ? рджреЛ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ, "рдИрд╡реЗрдВрдЯ рдмреБрджрдмреБрджрд╛рд╣рдЯ," рдФрд░ рдиреЗрдЯрд╕реНрдХреЗрдк рдХрдореНрдпреБрдирд┐рдХреЗрдЯрд░ рдореЗрдВ, "рдИрд╡реЗрдВрдЯ рд╣реБрдХрд┐рдВрдЧред"
рдШрдЯрдирд╛ рдмреБрджрдмреБрджрд╛рдИ
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдШрдЯрдирд╛ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдкреЗрдбрд╝ рдореЗрдВ рд╕рдмрд╕реЗ рдЧрд╣рд░реА рдиреЛрдб рдкрд░ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦрд┐рдбрд╝рдХреА рдкрд░ рд╣реА рдЙрдЧрддрд╛ рд╣реИред
<!DOCTYPE html> <html> <head> <title>Some title</title> </head> <body> <div id="myDiv">Click Me</div> </body> </html>
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрджреЗрд╢ рд╣реЛрдВрдЧреЗ:
- div рддрддреНрд╡
- рд╢рд░реАрд░ рдХрд╛ рддрддреНрд╡
- html рддрддреНрд╡
- рджрд╕реНрддрд╛рд╡реЗрдЬрд╝
- рдЦрд┐рдбрд╝рдХреА
рдЕрдм рд╕рд░реНрдлрд┐рдВрдЧ рдХреЛ рд╕рднреА рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╣реЛред
рдШрдЯрдирд╛ рдЕрд╡рд░реЛрдзрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдкрд░реАрдд рд╕рдЪ рд╣реИ:
- рдЦрд┐рдбрд╝рдХреА
- рджрд╕реНрддрд╛рд╡реЗрдЬрд╝
- html рддрддреНрд╡
- рд╢рд░реАрд░ рдХрд╛ рддрддреНрд╡
- div рддрддреНрд╡
рдпрд╣ рд╕реЛрдЪрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд▓рдХреНрд╖реНрдп рддрддреНрд╡ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдШрдЯрдирд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдиреЗрдЯрд╕реНрдХреЗрдк рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдмрд╛рдж рдореЗрдВ рд╕рднреА рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдпрд╛ рдЧрдпрд╛)ред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ DOM рдЗрд╡реЗрдВрдЯ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд╕рдВрд░рдЪрдирд╛ рд╣реИ:
- рдЦрд┐рдбрд╝рдХреА
- рджрд╕реНрддрд╛рд╡реЗрдЬрд╝
- html рддрддреНрд╡
- рд╢рд░реАрд░ рддрддреНрд╡ // рдЕрд╡рд░реЛрдзрди рдЪрд░рдг рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ
- div рдПрд▓рд┐рдореЗрдВрдЯ // рд▓рдХреНрд╖реНрдп рдЪрд░рдг
- рд╢рд░реАрд░ рддрддреНрд╡ // рдЪрдврд╝рд╛рдИ рдХрд╛ рдЪрд░рдг рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
- html рддрддреНрд╡
- рджрд╕реНрддрд╛рд╡реЗрдЬрд╝
- рдЦрд┐рдбрд╝рдХреА
рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЛ рддреАрди рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЗрдВрдЯрд░рд╕реЗрдкреНрд╢рди рдЪрд░рдг - рдИрд╡реЗрдВрдЯ рдХреЛ рддрддреНрд╡, рдЯрд╛рд░рдЧреЗрдЯ рдлреЗрдЬ - рдЯрд╛рд░рдЧреЗрдЯ рдПрд▓рд┐рдореЗрдВрдЯ рдФрд░ рдПрд╕реЗрдВрдЯ рдлреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдИрд╡реЗрдВрдЯ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдХреЛрдИ рднреА рдЕрдВрддрд┐рдо рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдИрд╡реЗрдВрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреА рдУрд░ рд░реБрдЦ рдХрд░рддреЗ рд╣реИрдВ
рдЖрдЗрдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред
const btn = document.getElementById('myDiv') btn.addEventListener("click", handler)
рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреЗ рдкреНрдпрд╛рд░реЗ IE рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдЯреИрдЪрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдбрд┐рдЯреИрдЪрд╡реЗрдВрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдФрд░ рдЖрдк рдХрдИ рдмрд╛рд░ рдШрдЯрдирд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрди рдЕрдк рдХрд░рдХреЗ рд╣рдо рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВред
рд▓реЗрдХрд┐рди рд╣рдо рдХреЛрдбрд░реНрд╕ рдХреЗ рдмрд╛рд╣рд░ g * рдирд╣реАрдВ рд╣реИрдВред рдЪрд▓реЛ рд╕рдм рдХреБрдЫ рдХреИрдирди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ:
var EventUtil = { addHandler: function (elem, type, handler) { if (elem.addEventListener) { elem.addEventListener(type, handler, false) } else if (elem.attachEvent) { elem.attachEvent("on" + type, handler) } else { elem["on" = type] = hendler } }, removeHandler: function (elem, type, handler) { if (elem.removeEventListener) { elem.removeEventListener(type, handler, false) } else if (elem.detachEvent) { elem.detachEvent("on" + type, handler) } else { elem["on" = type] = null } } }
рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛, рд▓реЗрдХрд┐рди рдШрдЯрдирд╛ рд╡рд╕реНрддреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдЖрдЦрд┐рд░рдХрд╛рд░, IE рдореЗрдВ .target .srcElement, preventDefault рдирд╣реАрдВ рд╣реИ? рдХреЛрдИ рд╡рд╛рдкрд╕реА рдирд╣реАрдВ = рдЭреВрдареАред рд▓реЗрдХрд┐рди рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ:
var EventUtil = { addHandler: function (elem, type, handler) { if (elem.addEventListener) { elem.addEventListener(type, handler, false) } else if (elem.attachEvent) { elem.attachEvent("on" + type, handler) } else { elem["on" = type] = hendler } }, getEvent: function (event) { return event ? event : window.event }, getTarget: function (event) { return event.target || event.srcElement }, preventDefault: function (event) { if (event.preventDefault) { event.preventDefault() } else { event.returnValue = false } }, removeHandler: function (elem, type, handler) { if (elem.removeEventListener) { elem.removeEventListener(type, handler, false) } else if (elem.detachEvent) { elem.detachEvent("on" + type, handler) } else { elem["on" = type] = null } }, stopPropagation: function (event) { if (event.stopPropagation) { event.stopPropagation() } else { event.cancelBubble = true } } }
рдЖрджрд┐ рдЖрджрд┐ рдФрд░ рдпреЗ рд╕рднреА рдиреГрддреНрдп рд╣реИрдВред
рдЦреИрд░ рд╣рдо рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдордиреЗ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛, рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ рд╕рдЪ рд╣реИ, рдХреЛрдб рдмрд▓реНрдХрд┐ рдмреЛрдЭрд┐рд▓ рдмрд╛рд╣рд░ рдЖрдпрд╛ рдерд╛ред рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдХрдИ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рджрд╕реНрдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд╛рд╣, рдпрд╣ рдХреЛрдб рдХреА рдХреБрдЫ рд▓рд╛рдЗрдиреЗрдВ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
<ul> <li id="id1">go somewhere</li> <li id="id2">do something</li> <li id="some-next-id">next</li> </ul> var item1 = document.getElementById('id1') var item2 = document.getElementById('id2') var itemNext = document.getElementById('some-next-id') EventUtil.addHandler(item1, "click", someHandle) EventUtil.addHandler(item2, "click", someHandle2) EventUtil.addHandler(itemNext, "click", someHandle3)
рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП, рдФрд░ рд╣рдореЗрдВ рд╣рдЯрд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП, рд▓рдХреНрд╖реНрдп рдФрд░ рдкрд╕рдВрдж рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рдФрд░ рдпрд╣рд╛рдБ рдШрдЯрдирд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред
рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╣реИрдВрдбрд▓рд░ рдХреЛ DOM рдЯреНрд░реА рдореЗрдВ рдЙрдЪреНрдЪрддрдо рдмрд┐рдВрджреБ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реИ:
<ul id="main-id">
рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реИрдВрдбрд▓рд░ рд╣реИ, рдФрд░ рдЖрдИрдбреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рдВрдЫрд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрдо рдореЗрдореЛрд░реА рдЦрдкрдд рд╕рдордЧреНрд░ рдкреГрд╖реНрда рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддреА рд╣реИред рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЛрдо рдХреЛ рдХрдо рд╕рдордп рдФрд░ рдХрдо рдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЕрдкрд╡рд╛рдж рд╢рд╛рдпрдж рдорд╛рдЙрд╕рдУрд╡рд░ рдФрд░ рдорд╛рдЙрд╕рдЖрдЙрдЯ рд╣реИ, рдЙрдирдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред
рдЕрдм рд░рд┐рдПрдХреНрдЯ рдХрд╛ рдХреНрдпрд╛
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлреЗрд╕рдмреБрдХ рдХреЗ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд╕рднреА рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ SyntheticEvent рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рддрд╛ рд╣реИред рдЬреЛ рдкреВрд▓ рд╕реЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреА рджреЗрдЦрднрд╛рд▓ рдХрд░рддрд╛ рд╣реИ, рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рднреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред
рд╕рдм рдареАрдХ рд╣реИред
рдлрд┐рд░ рднреА, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИрдВрдбрд▓рд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИрдВрдбрд▓рд░ рд╣реИред рдореИрдВ рдХрдИ рдмрд╛рд░ рдорд┐рд▓рд╛, рдФрд░ рдореБрдЭреЗ рдЦреБрдж рдкрд░ рдкрд╢реНрдЪрд╛рддрд╛рдк рд╣реБрдЖ, рдореИрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдб рд▓рд┐рдЦрд╛ рдерд╛:
class Example extends React.Component { handleClick () { console.log('click') } render () { return ( <div> {new Array(20).fill().map((_, index) => <div key={index} // elem.id id={index} // elem.id onClick={() => console.log('click')} /> )} </div> ) } }
рдЙрджрд╛рд╣рд░рдг рдорд╛рдорд▓реЗ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬрдм рддрддреНрд╡реЛрдВ рдХреА рдПрди-рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд╢реАрдЯ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдХреА рдПрди-рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рдеред
рдЪрд▓реЛ, рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХрд┐рддрдиреЗ рд╣реИрдВрдбрд▓рд░ рдЕрднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдПрдХ рдЕрдЪреНрдЫреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд┐рд▓реА:
Array.from(document.querySelectorAll('*')) .reduce(function(pre, dom){ var clks = getEventListeners(dom).click; pre += clks ? clks.length || 0 : 0; return pre }, 0)
рдХреНрд░реЛрдо рджреЗрд╡-рдЙрдкрдХрд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдФрд░ рдЕрдм рд╣рдо рдпрд╣ рд╕рдм рдЕрднрд┐рднрд╛рд╡рдХ рдбрд┐рд╡ рдФрд░ рдЪреАрдпрд░реНрд╕ рдХреЛ рд╕реМрдВрдкрддреЗ рд╣реИрдВ, рд╣рдордиреЗ рд╕рд┐рд░реНрдл рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди n = array.length рд╕рдордп рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдиреАрдЪреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб:
class Example extends React.Component { constructor () { super() this.state = { useElem: 0 } } handleClick (elem) { var id = elem.target.id this.setState({ useElem: id }) } render () { return ( <div onClick={this.handleClick}> {new Array(20).fill().map((_, index) => <div key={index} // elem.id id={index} // elem.id useElem={index === this.state.useElem} /> )} </div> ) } }
рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрдкрдХрд░рдг рд╣реИ, рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рддрд┐рдкрд╛рджрди рдФрд░ рд▓рдЧрд╛рддрд╛рд░ redraws рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдмрд╕ рдЕрдкреВрд░рдгреАрдп рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рджрдпрд╛ рдХрд░реЗрдВ, рд╡реЗ рдЕрд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рдпрд╣ рд▓реЗрдЦ рдкреЗрд╢реЗрд╡рд░ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрд╕реНрддрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬрд┐рд╕реЗ рдирд┐рдХреЛрд▓рд╕ рдЬрд╝рдХрд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдпрд╛ рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдЦрд╛рдореА рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдХреЛрдИ рдЧрд▓рддреА рд╣реЛ рдпрд╛ рдмрд╕ рдПрдХ рд╕рд╡рд╛рд▓ рд╣реЛ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред рдореИрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЦреБрд╢реА рд╣реЛрдЧреА!