I’m getting a JSON element and building a list from its items like this:
getTitles: function(data) {
data = data || {};
var list = [];
$.getJSON(
'/titles',
data,
function(data) {
$.each(data.data, function(key, val) {
list.push(
'<li><a href="'+ val.href +'">'+ val.title +'</a><span class="count">'+ val.count +'</span></li>'
)
});
$('#title-items').html(list.join(''));
}
);
}
And I’m binding click event for a elements like this:
$('a').on('click', function(e) {
alert('clicked');
e.preventDefault();
});
Old a elements shows alert but new ones follow URL. Event handler doesn’t work for new ones. How can I solve this?
You are not using the correct code to get live functionality.
#title-itemsin this example). You can usedocumenthere too if you want to handle allaelements.on), then the sub selector (a), and then the callback function for the event.Now, when
clickevents bubble up to#title-items, it will check to see if the element is anaelement, and if so, fire the callback.