Simple question, since version 1.7 of jQuery .live() has been deprecated in favor of .on(); however .on() does not seem to work on elements that are rendered via JavaScript and loaded into the DOM. So my question is, should .live() still be used or how would .on() capture these newly generated elements?
As an example, here's my code:
$("#listitem").append("<li id='removeitem'>" +
formdata + ' <a href="#">Remove</a></li>');
And when I try to operate on this element via .on() - the result is nothing, whereas .live() is able to grab this element.
$("#removeitem").live("click", function(event) { alert($(this).text()); });
liveversion:should be changed to:
Where
containerIdis the static element that theremoveitemis loaded into.You can simply use
bodyas the static element:But the code will be less efficient, just try with it to show how it works.
Notes:
idbecause it's invalid markup.listitemis the static element in your code.Update:
You can't simply replace them... They work in other ways, and have different parameters!
Read the docs for each function:
on:live: