{"id":3810,"date":"2024-07-24T06:26:37","date_gmt":"2024-07-24T06:26:37","guid":{"rendered":"https:\/\/ubiq.co\/tech-blog\/?p=3810"},"modified":"2024-07-24T10:00:18","modified_gmt":"2024-07-24T10:00:18","slug":"how-to-bind-events-to-dynamically-created-elements-in-javascript","status":"publish","type":"post","link":"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/","title":{"rendered":"How to Bind Events to Dynamically Created Elements in JavaScript"},"content":{"rendered":"\n<p>HTML events allow you to create interactive websites and applications. They enable you to add dynamic functionality to your web pages such as button clicks, on hover, click and drag and more. However, often web developers need to bind events to dynamically created page elements. In this article, we will learn how to attach events to dynamic page elements.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/#What_is_Event_Binding_to_Dynamic_Elements\" >What is Event Binding to Dynamic Elements<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/#What_is_Event_Delegation\" >What is Event Delegation<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/#How_to_Bind_Events_to_Dynamically_Created_Elements\" >How to Bind Events to Dynamically Created Elements<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/#1_Using_jQuery_Event_Delegation\" >1. Using jQuery (Event Delegation)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/#2_Using_JavaScript_Event_Delegation\" >2. Using JavaScript (Event Delegation)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/#3_Using_Inline_Event_Handlers\" >3. Using Inline Event Handlers<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/#Useful_Points_in_Event_Binding\" >Useful Points in Event Binding<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/#Conclusion\" >Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_is_Event_Binding_to_Dynamic_Elements\"><\/span>What is Event Binding to Dynamic Elements<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>JavaScript allows you to bind numerous events to HTML elements such on click, on hover, on change, etc. using event handlers. They are already available to each DOM element created during page load. We just need to call them and define their processing. But all these event handlers can be attached only to DOM elements already present on the page at the time of loading. If you attach an event handler to a dynamically added element, that is added via DOM JavaScript, AJAX or other means, then the default event handler will not bind to the new element. That is why you need a different approach to attach event handlers to dynamic events.<\/p>\n\n\n\n<p>For example, let us say you have a list of links on a page where you display helpful text message on hovering over each link. This may be because you have added an event handler that displays the message whenever anyone hovers over a link on the web page. Let us say you dynamically add a new link to your page. You will see that the new link does not display any message when you hover over it. That is because the default HTML event handlers are not applicable to dynamically created elements. But in today&#8217;s web development, most of the DOM elements are dynamically created, whether it is content, link, div or something else. Therefore, it is essential to bind events to dynamically created elements.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_is_Event_Delegation\"><\/span>What is Event Delegation<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>There are several ways to handle events triggered by dynamically created elements. However, they mostly use <a href=\"https:\/\/learn.jquery.com\/events\/event-delegation\/\" target=\"_blank\" rel=\"noreferrer noopener\">event delegation<\/a>. Typically, we attach event handler directly to the DOM elements present on web page. But in case of dynamically created elements, you need to attach the event to its parent or an ancestor that is already present when your page is loaded (static). The event handler is triggered whenever the event is triggered on the element or any of its descendants. In the event handler, we check if the element which triggered the element matches the selector, to run the handler function. This is known as event delegation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_to_Bind_Events_to_Dynamically_Created_Elements\"><\/span>How to Bind Events to Dynamically Created Elements<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>We will learn how to bind events to dynamic DOM elements using plain JavaScript as well as popular JS library jQuery. Let us say you have the following HTML page.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;html&gt;<br>&lt;head&gt;&lt;script src=\"https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/3.3.1\/jquery.min.js\"&gt;    &lt;\/script&gt;&lt;\/head&gt;<br>     &lt;body&gt;<br>       &lt;ul id=\"links\"&gt;<br>        &lt;li class=\"static-link\"&gt;Static List item&lt;\/li&gt;<br>       &lt;\/ul&gt;<br>     &lt;\/body&gt;<br><br>&lt;script type=\"text\/javascript\"&gt;<br>   \/\/ Create the new element<br>    var ul=document.getElementById('links');<br>\tvar li = document.createElement('li');<br>\tli.className = 'dynamic-link'; \/\/ class name<br>\tli.innerHTML = 'Dynamic List Item'; \/\/ inner text<br>\tul.appendChild(li); \/\/ append element<br>&lt;\/script&gt;<br><br>&lt;\/html&gt;<\/pre>\n\n\n\n<p>In the above code, we have simply created an unordered list with one static list item. We use JavaScript to add a dynamic list item. We have also imported jQuery library since we will need it later.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_Using_jQuery_Event_Delegation\"><\/span>1. Using jQuery (Event Delegation)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>jQuery provides a simple yet powerful function on() that allows you to easily add event handlers to dynamic elements, using event delegation. Here is its syntax.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$(static_ancestor).on(event, element, function() {});<\/pre>\n\n\n\n<p>The above on() function is called on a static ancestor of the dynamic element. It accepts 3 arguments &#8211; event name, selector for dynamic element and the event handler function. Here is an example to add &#8216;on hover&#8217; event to the dynamic list item that displays an alert box with &#8216;hello&#8217; message. For this purpose, add the following line to &lt;script&gt; tag.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$('#links').on('click', 'li', function() {alert('hello')});<\/pre>\n\n\n\n<p>Here is the full code.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;html&gt;<br>&lt;head&gt;&lt;script src=\"https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/3.3.1\/jquery.min.js\"&gt;    &lt;\/script&gt;&lt;\/head&gt;<br>     &lt;body&gt;<br>       &lt;ul id=\"links\"&gt;<br>        &lt;li class=\"static-link\"&gt;Static List item&lt;\/li&gt;<br>       &lt;\/ul&gt;<br>     &lt;\/body&gt;<br><br>&lt;script type=\"text\/javascript\"&gt;<br>        \/\/ Create the new element<br>        var ul=document.getElementById('links');<br>\tvar li = document.createElement('li');<br>\tli.className = 'dynamic-link'; \/\/ class name<br>\tli.innerHTML = 'Dynamic List Item'; \/\/ inner text<br>\tul.appendChild(li); \/\/ append element<br>\t<br>\t<strong>$('#links').on('click', 'li', function() {alert('hello')});<\/strong><br>&lt;\/script&gt;<br><br>&lt;\/html&gt;<\/pre>\n\n\n\n<p>Now, when you click any of the list items &#8211; static or dynamic, it will show an alert box with &#8216;hello&#8217; message. If you want to add event handler only to dynamically added list item, you will have to customize your selector to select only those list items as shown below. Here is an example where we have only added class name selector for list item, instead of specifying list item tag in selector. This will select only the dynamic list item and not the static one.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$('#links').on('click', <strong>'.dynamic-link'<\/strong>, function() {alert('hello')});<\/pre>\n\n\n\n<p>If you are unable to find a stable ancestor to your dynamic element, you can call on() function DOM elements like document or body which represent the full page.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_Using_JavaScript_Event_Delegation\"><\/span>2. Using JavaScript (Event Delegation)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>In this case also, we attach the event handler to a static ancestor of dynamic element as shown below. Add the following JS code to your page&#8217;s &lt;script&gt; tag.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">var ul=document.getElementById('links');<br><br>ul.addEventListener('click',function(e){<br>     if(e.target.classList.contains('dynamic-link')){<br>        alert('hello');<br>       }<br>  });<\/pre>\n\n\n\n<p>In the above code, we add event listener to the parent list tag ul, for click event. When any of its child elements, that is, list items are clicked, then it will check the class name of the clicked element. If it matches &#8216;dynamic-link&#8217;, then it will display alert box. So your full code will look like the following.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;html&gt;<br>&lt;head&gt;&lt;script src=\"https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/3.3.1\/jquery.min.js\"&gt;    &lt;\/script&gt;&lt;\/head&gt;<br>     &lt;body&gt;<br>       &lt;ul id=\"links\"&gt;<br>        &lt;li class=\"static-link\"&gt;Static List item&lt;\/li&gt;<br>       &lt;\/ul&gt;<br>     &lt;\/body&gt;<br><br>&lt;script type=\"text\/javascript\"&gt;<br>   \/\/ Create the new element<br>    var ul=document.getElementById('links');<br>\tvar li = document.createElement('li');<br>\tli.className = 'dynamic-link'; \/\/ Class name<br>\tli.innerHTML = 'Dynamic List Item'; \/\/ Text inside<br>\tul.appendChild(li); \/\/ Append it<br>\t<br><strong>\/\/add event listener\t<br>ul.addEventListener('click',function(e){<br>     if(e.target.classList.contains('dynamic-link')){<br>        alert('hello');<br>       }<br>  });<\/strong><br>&lt;\/script&gt;<br><br>&lt;\/html&gt;<\/pre>\n\n\n\n<p>In this case, the event handler is added only to those elements containing class name &#8216;dynamic-link&#8217; and not all list items. So this allows you to precisely target dynamic items for event handling.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_Using_Inline_Event_Handlers\"><\/span>3. Using Inline Event Handlers<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>In this approach, we simply add the event handler while dynamically creating new element itself. First we define the event handler.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">function dynamic_event() {<br>  alert('hello');<br>}<\/pre>\n\n\n\n<p>Then we attach the event to element when we dynamically create it. Here we call dynamic_event function on onclick event.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">var ul=document.getElementById('links');<br>var li = document.createElement('li');<br>li.className = 'dynamic-link'; \/\/ class name<br>li.innerHTML = dynamicValue; \/\/ inner text<br>$('#links').appendChild(li); \/\/ append element<br><strong>li.onclick = dynamic_event; \/\/ attach event<\/strong><\/pre>\n\n\n\n<p>In this case, the event handler is applied only to the element where its is attached and not all elements, as is the case with event delegation. So it gives you better control over event handling of dynamic elements.<\/p>\n\n\n\n<p>Here is what your full code will look like.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;html&gt;<br>&lt;head&gt;&lt;script src=\"https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/3.3.1\/jquery.min.js\"&gt;    &lt;\/script&gt;&lt;\/head&gt;<br>     &lt;body&gt;<br>       &lt;ul id=\"links\"&gt;<br>        &lt;li class=\"static-link\"&gt;Static List item&lt;\/li&gt;<br>       &lt;\/ul&gt;<br>     &lt;\/body&gt;<br><br>&lt;script type=\"text\/javascript\"&gt;<br>        \/\/ Create the new element<br>        var ul=document.getElementById('links');<br>\tvar li = document.createElement('li');<br>\tli.className = 'dynamic-link'; \/\/ class name<br>\tli.innerHTML = 'Dynamic List Item'; \/\/ inner text<br>\tul.appendChild(li); \/\/ append element<br>\t<br>\tli.onclick = dynamic_event; \/\/ attach event<br>\t<br>\t<br>\tfunction dynamic_event() {<br>           alert('hello');<br>         }<br>&lt;\/script&gt;<br><br>&lt;\/html&gt;<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Useful_Points_in_Event_Binding\"><\/span>Useful Points in Event Binding<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Here are some best practices to consider while binding events to dynamic elements.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Event Delegation vs Inline Events<\/strong> &#8211; If you have a small number of dynamic elements, you can use event delegation since it is easily customizable and separate from DOM creation. If you have a large number of dynamically created items, say, a table of million rows added dynamically, then it is better to add inline event handler. Event delegation requires searching linearly to find the suitable element that triggered event. This will affect performance as dynamic elements increase on your page. Inline events work directly on the said element and does not require any lookups.<\/li>\n\n\n\n<li><strong>Pick Nearest Ancestor<\/strong> &#8211; Try adding event handler to parent or nearest ancestor of dynamically created element. This will make it easy for browser to quickly find the appropriate dynamic element. Avoid using document and body elements since it will mean the event handler is applicable for elements on entire page, and will affect performance. In this case, for every event on your page&#8217;s body, the browser will have to scan all its descendants to see if there are any event handlers to be triggered.<\/li>\n\n\n\n<li><strong>Review Event Nesting<\/strong> &#8211; Since Event delegation applies event handler to all descendants of an element, it is possible that a given dynamic element will end up having multiple event handlers for same kind of event. This can cause undesirable output. So it is good to review which event handlers are triggered for your dynamic elements.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>In this article, we have learnt several simple ways to easily bind events to dynamically created DOM elements. JavaScript allows you to add event listener both during and after creating dynamic elements, whereas jQuery allows you to add event handler after adding the element. There are two ways to add event handlers to dynamic elements &#8211; using event delegation after element is added or using inline event handlers during element creation. It is important to understand that depending on the kind selectors you define, such event binding also applies to elements that are not dynamically created. In any case, the above solutions should help you add event handlers to the dynamic elements on your web pages.<\/p>\n\n\n\n<p>Also read:<\/p>\n\n\n\n<p><a href=\"https:\/\/ubiq.co\/tech-blog\/how-to-improve-website-loading-speed-in-mobile\/\">How to Improve Website Loading Speed in Mobile<\/a><br><a href=\"https:\/\/ubiq.co\/tech-blog\/top-5-server-monitoring-tools\/\">Top 5 Server Monitoring Tools<\/a><br><a href=\"https:\/\/ubiq.co\/tech-blog\/how-to-choose-a-web-hosting-service\/\">How to Choose Web Hosting Service<\/a><br><a href=\"https:\/\/ubiq.co\/tech-blog\/prevent-seo-bots-crawling-site\/\">How to Prevent SEO Bots from Crawling Your Site<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Often web developers need to bind events to dynamically created elements on web pages. Here are the steps for event binding to dynamic elements.<\/p>\n","protected":false},"author":1,"featured_media":3838,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[295],"tags":[296,297],"class_list":["post-3810","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","tag-bind-event","tag-dynamic-elements"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Bind Events to Dynamically Created Elements in JavaScript - Ubiq BI<\/title>\n<meta name=\"description\" content=\"Often web developers need to bind events to dynamically created elements on web pages. Here are the steps for event binding to dynamic elements.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Bind Events to Dynamically Created Elements in JavaScript - Ubiq BI\" \/>\n<meta property=\"og:description\" content=\"Often web developers need to bind events to dynamically created elements on web pages. Here are the steps for event binding to dynamic elements.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/\" \/>\n<meta property=\"og:site_name\" content=\"Ubiq BI\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ubiqbi\" \/>\n<meta property=\"article:published_time\" content=\"2024-07-24T06:26:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-07-24T10:00:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ubiq.co\/tech-blog\/wp-content\/uploads\/2024\/07\/bind-event-dynamic-element-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"778\" \/>\n\t<meta property=\"og:image:height\" content=\"519\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sreeram Sreenivasan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@UbiqBI\" \/>\n<meta name=\"twitter:site\" content=\"@UbiqBI\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sreeram Sreenivasan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/how-to-bind-events-to-dynamically-created-elements-in-javascript\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/how-to-bind-events-to-dynamically-created-elements-in-javascript\\\/\"},\"author\":{\"name\":\"Sreeram Sreenivasan\",\"@id\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/#\\\/schema\\\/person\\\/db98d49a766a3a111d8510935ab90abc\"},\"headline\":\"How to Bind Events to Dynamically Created Elements in JavaScript\",\"datePublished\":\"2024-07-24T06:26:37+00:00\",\"dateModified\":\"2024-07-24T10:00:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/how-to-bind-events-to-dynamically-created-elements-in-javascript\\\/\"},\"wordCount\":1335,\"image\":{\"@id\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/how-to-bind-events-to-dynamically-created-elements-in-javascript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/ubiq.co\\\/tech-blog\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/bind-event-dynamic-element-1.jpg?fit=778%2C519&ssl=1\",\"keywords\":[\"bind event\",\"dynamic elements\"],\"articleSection\":[\"JavaScript\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/how-to-bind-events-to-dynamically-created-elements-in-javascript\\\/\",\"url\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/how-to-bind-events-to-dynamically-created-elements-in-javascript\\\/\",\"name\":\"How to Bind Events to Dynamically Created Elements in JavaScript - Ubiq BI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/how-to-bind-events-to-dynamically-created-elements-in-javascript\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/how-to-bind-events-to-dynamically-created-elements-in-javascript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/ubiq.co\\\/tech-blog\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/bind-event-dynamic-element-1.jpg?fit=778%2C519&ssl=1\",\"datePublished\":\"2024-07-24T06:26:37+00:00\",\"dateModified\":\"2024-07-24T10:00:18+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/#\\\/schema\\\/person\\\/db98d49a766a3a111d8510935ab90abc\"},\"description\":\"Often web developers need to bind events to dynamically created elements on web pages. Here are the steps for event binding to dynamic elements.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/how-to-bind-events-to-dynamically-created-elements-in-javascript\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/how-to-bind-events-to-dynamically-created-elements-in-javascript\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/how-to-bind-events-to-dynamically-created-elements-in-javascript\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/ubiq.co\\\/tech-blog\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/bind-event-dynamic-element-1.jpg?fit=778%2C519&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/ubiq.co\\\/tech-blog\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/bind-event-dynamic-element-1.jpg?fit=778%2C519&ssl=1\",\"width\":778,\"height\":519,\"caption\":\"bind events to dynamically created elements\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/how-to-bind-events-to-dynamically-created-elements-in-javascript\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Bind Events to Dynamically Created Elements in JavaScript\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/#website\",\"url\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/\",\"name\":\"Ubiq BI\",\"description\":\"Build dashboards &amp; reports in minutes\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/#\\\/schema\\\/person\\\/db98d49a766a3a111d8510935ab90abc\",\"name\":\"Sreeram Sreenivasan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4b3127ed2d4bb8efb3fa0bbb52cf2efd4d0156c97fc05a503537c883e8279947?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4b3127ed2d4bb8efb3fa0bbb52cf2efd4d0156c97fc05a503537c883e8279947?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4b3127ed2d4bb8efb3fa0bbb52cf2efd4d0156c97fc05a503537c883e8279947?s=96&d=mm&r=g\",\"caption\":\"Sreeram Sreenivasan\"},\"description\":\"Sreeram Sreenivasan is the Founder of Ubiq. He has helped many Fortune 500 companies in the areas of BI &amp; software development.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/sreeram-sreenivasan\\\/\"],\"url\":\"https:\\\/\\\/ubiq.co\\\/tech-blog\\\/author\\\/wordpress\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Bind Events to Dynamically Created Elements in JavaScript - Ubiq BI","description":"Often web developers need to bind events to dynamically created elements on web pages. Here are the steps for event binding to dynamic elements.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/","og_locale":"en_US","og_type":"article","og_title":"How to Bind Events to Dynamically Created Elements in JavaScript - Ubiq BI","og_description":"Often web developers need to bind events to dynamically created elements on web pages. Here are the steps for event binding to dynamic elements.","og_url":"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/","og_site_name":"Ubiq BI","article_publisher":"https:\/\/www.facebook.com\/ubiqbi","article_published_time":"2024-07-24T06:26:37+00:00","article_modified_time":"2024-07-24T10:00:18+00:00","og_image":[{"width":778,"height":519,"url":"https:\/\/ubiq.co\/tech-blog\/wp-content\/uploads\/2024\/07\/bind-event-dynamic-element-1.jpg","type":"image\/jpeg"}],"author":"Sreeram Sreenivasan","twitter_card":"summary_large_image","twitter_creator":"@UbiqBI","twitter_site":"@UbiqBI","twitter_misc":{"Written by":"Sreeram Sreenivasan","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/#article","isPartOf":{"@id":"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/"},"author":{"name":"Sreeram Sreenivasan","@id":"https:\/\/ubiq.co\/tech-blog\/#\/schema\/person\/db98d49a766a3a111d8510935ab90abc"},"headline":"How to Bind Events to Dynamically Created Elements in JavaScript","datePublished":"2024-07-24T06:26:37+00:00","dateModified":"2024-07-24T10:00:18+00:00","mainEntityOfPage":{"@id":"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/"},"wordCount":1335,"image":{"@id":"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/ubiq.co\/tech-blog\/wp-content\/uploads\/2024\/07\/bind-event-dynamic-element-1.jpg?fit=778%2C519&ssl=1","keywords":["bind event","dynamic elements"],"articleSection":["JavaScript"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/","url":"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/","name":"How to Bind Events to Dynamically Created Elements in JavaScript - Ubiq BI","isPartOf":{"@id":"https:\/\/ubiq.co\/tech-blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/#primaryimage"},"image":{"@id":"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/ubiq.co\/tech-blog\/wp-content\/uploads\/2024\/07\/bind-event-dynamic-element-1.jpg?fit=778%2C519&ssl=1","datePublished":"2024-07-24T06:26:37+00:00","dateModified":"2024-07-24T10:00:18+00:00","author":{"@id":"https:\/\/ubiq.co\/tech-blog\/#\/schema\/person\/db98d49a766a3a111d8510935ab90abc"},"description":"Often web developers need to bind events to dynamically created elements on web pages. Here are the steps for event binding to dynamic elements.","breadcrumb":{"@id":"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/#primaryimage","url":"https:\/\/i0.wp.com\/ubiq.co\/tech-blog\/wp-content\/uploads\/2024\/07\/bind-event-dynamic-element-1.jpg?fit=778%2C519&ssl=1","contentUrl":"https:\/\/i0.wp.com\/ubiq.co\/tech-blog\/wp-content\/uploads\/2024\/07\/bind-event-dynamic-element-1.jpg?fit=778%2C519&ssl=1","width":778,"height":519,"caption":"bind events to dynamically created elements"},{"@type":"BreadcrumbList","@id":"https:\/\/ubiq.co\/tech-blog\/how-to-bind-events-to-dynamically-created-elements-in-javascript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ubiq.co\/tech-blog\/"},{"@type":"ListItem","position":2,"name":"How to Bind Events to Dynamically Created Elements in JavaScript"}]},{"@type":"WebSite","@id":"https:\/\/ubiq.co\/tech-blog\/#website","url":"https:\/\/ubiq.co\/tech-blog\/","name":"Ubiq BI","description":"Build dashboards &amp; reports in minutes","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ubiq.co\/tech-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/ubiq.co\/tech-blog\/#\/schema\/person\/db98d49a766a3a111d8510935ab90abc","name":"Sreeram Sreenivasan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4b3127ed2d4bb8efb3fa0bbb52cf2efd4d0156c97fc05a503537c883e8279947?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4b3127ed2d4bb8efb3fa0bbb52cf2efd4d0156c97fc05a503537c883e8279947?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4b3127ed2d4bb8efb3fa0bbb52cf2efd4d0156c97fc05a503537c883e8279947?s=96&d=mm&r=g","caption":"Sreeram Sreenivasan"},"description":"Sreeram Sreenivasan is the Founder of Ubiq. He has helped many Fortune 500 companies in the areas of BI &amp; software development.","sameAs":["https:\/\/www.linkedin.com\/in\/sreeram-sreenivasan\/"],"url":"https:\/\/ubiq.co\/tech-blog\/author\/wordpress\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/ubiq.co\/tech-blog\/wp-content\/uploads\/2024\/07\/bind-event-dynamic-element-1.jpg?fit=778%2C519&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/pbGGTT-Zs","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ubiq.co\/tech-blog\/wp-json\/wp\/v2\/posts\/3810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ubiq.co\/tech-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ubiq.co\/tech-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ubiq.co\/tech-blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ubiq.co\/tech-blog\/wp-json\/wp\/v2\/comments?post=3810"}],"version-history":[{"count":36,"href":"https:\/\/ubiq.co\/tech-blog\/wp-json\/wp\/v2\/posts\/3810\/revisions"}],"predecessor-version":[{"id":3853,"href":"https:\/\/ubiq.co\/tech-blog\/wp-json\/wp\/v2\/posts\/3810\/revisions\/3853"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ubiq.co\/tech-blog\/wp-json\/wp\/v2\/media\/3838"}],"wp:attachment":[{"href":"https:\/\/ubiq.co\/tech-blog\/wp-json\/wp\/v2\/media?parent=3810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ubiq.co\/tech-blog\/wp-json\/wp\/v2\/categories?post=3810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ubiq.co\/tech-blog\/wp-json\/wp\/v2\/tags?post=3810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}