More than a year ago, I had written a blog about how to bind events to newly added elements using jQuery.
The scenario can be found here: http://blog.kongnir.com/2012/02/08/jquery-function-not-binding-to-newly-added-dom-elements/
In my previous solution, I had used $.live() in place of $.change(). However, as noted by a commenter in that blog, as of time of writing, $.live() is deprecated.
Instead, we should now use $.on() if you need to capture events of newly added elements.
For example, in normal circumstance, we would do this:
$(".existing-button").click(function() { alert("This will work if button already exist on load"); });
However, if you add new elements to the document using AJAX, then the above will not work. That button doesn’t exist.
In both circumstances, this will work:
$(document).on("click",".new-button", function() { alert("This will work even if element is newly added"); });
If you notice, the syntax is quite different. The element to call on is the containing element, not the element that the event is called. So let’s say “.new-button” is contained within “#main”, then the following should work too.
$("#main").on("click",".new-button", function() { alert("This will work even if element is newly added"); });
Reference: http://api.jquery.com/on/