{"componentChunkName":"component---src-templates-blog-post-js","path":"/JavaScript/javascript-concept-1---event-delegation/","webpackCompilationHash":"f92dbf25810602c1889e","result":{"data":{"site":{"siteMetadata":{"title":"Web Devlog","author":"RossenaHuh","siteUrl":"https://github.com/rossenahuh","comment":{"disqusShortName":"RossenaHuh","utterances":"rossenahuh/my-dev-blog.git"},"sponsor":{"buyMeACoffeeId":"rossena"}}},"markdownRemark":{"id":"75ca408d-e9c1-5567-a2df-cd432fd3861b","excerpt":"Event Delegation in JavaScriptJS event listeners fire not only on a single DOM element but on all its decendants. For example, if you add event listeners to ul, you’re actually adding event listeners to all of children elements inside ul as well. This happens through a process…","html":"<h2 id=\"event-delegation-in-javascript\"><a href=\"#event-delegation-in-javascript\" aria-label=\"event delegation in javascript permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Event Delegation in JavaScript</h2>\n<p>JS event listeners fire not only on a single DOM element but on <strong>all its decendants</strong>. For example, if you add event listeners to ul, you’re actually adding event listeners to all of children elements inside ul as well. This happens through a process called <strong>event bubbling</strong></p>\n<p>event.target : The actual element that triggered event<br>\nevent.currentTarget : The element with the listener attached</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">function</span> <span class=\"token function\">handleChange</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">event</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// when name changes</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>event<span class=\"token punctuation\">.</span>currentTarget<span class=\"token punctuation\">)</span> <span class=\"token comment\">//form tag</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>event<span class=\"token punctuation\">.</span>target<span class=\"token punctuation\">)</span> <span class=\"token comment\">//name input tag</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">let</span> el <span class=\"token operator\">=</span> document<span class=\"token punctuation\">.</span><span class=\"token function\">getElementById</span><span class=\"token punctuation\">(</span><span class=\"token string\">'form'</span><span class=\"token punctuation\">)</span>\nel<span class=\"token punctuation\">.</span><span class=\"token function\">addEventListener</span><span class=\"token punctuation\">(</span><span class=\"token string\">'change'</span><span class=\"token punctuation\">,</span> handleChange<span class=\"token punctuation\">)</span>\n\n<span class=\"token operator\">&lt;</span>form id<span class=\"token operator\">=</span><span class=\"token string\">\"form\"</span><span class=\"token operator\">></span>\n  <span class=\"token operator\">&lt;</span>div <span class=\"token keyword\">class</span><span class=\"token operator\">=</span><span class=\"token string\">\"input-group\"</span><span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span>label <span class=\"token keyword\">class</span><span class=\"token operator\">=</span><span class=\"token string\">\"control-label\"</span> <span class=\"token keyword\">for</span><span class=\"token operator\">=</span><span class=\"token string\">\"Name\"</span><span class=\"token operator\">></span>Name<span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>label<span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span>input type<span class=\"token operator\">=</span><span class=\"token string\">\"text\"</span> id<span class=\"token operator\">=</span><span class=\"token string\">\"Name\"</span> name<span class=\"token operator\">=</span><span class=\"token string\">\"Name\"</span> placeholder<span class=\"token operator\">=</span><span class=\"token string\">\"John Doe\"</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n  <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>div<span class=\"token operator\">></span>\n  <span class=\"token operator\">&lt;</span>div <span class=\"token keyword\">class</span><span class=\"token operator\">=</span><span class=\"token string\">\"input-group\"</span><span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span>label <span class=\"token keyword\">class</span><span class=\"token operator\">=</span><span class=\"token string\">\"control-label\"</span> <span class=\"token keyword\">for</span><span class=\"token operator\">=</span><span class=\"token string\">\"Email\"</span><span class=\"token operator\">></span>Email<span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>label<span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span>input type<span class=\"token operator\">=</span><span class=\"token string\">\"text\"</span> id<span class=\"token operator\">=</span><span class=\"token string\">\"Email\"</span> name<span class=\"token operator\">=</span><span class=\"token string\">\"Email\"</span> placeholder<span class=\"token operator\">=</span><span class=\"token string\">\"example@gmail.com\"</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n  <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>div<span class=\"token operator\">></span>\n<span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>form<span class=\"token operator\">></span></code></pre></div>\n<br>\n<br>\n<p><em>Reference</em>\n<a href=\"https://www.youtube.com/watch?v=MY0UBGX2FtA&#x26;t=1025s\">https://www.youtube.com/watch?v=MY0UBGX2FtA&#x26;t=1025s</a></p>\n<br>\n<br>","frontmatter":{"title":"JavaScript Concept 1 - Event Delegation","date":"July 01, 2019"}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"slug":"/JavaScript/javascript-concept-1---event-delegation/","previous":null,"next":{"fields":{"slug":"/JavaScript/javascript-concept-2---hoisting/"},"frontmatter":{"title":"JavaScript Concept 2 - Hoisting","category":"JavaScript"}}}}}