jQuery "on create" event for dynamically-created elements
combobox, javascript, jquery
Solution
You can `on` the `DOMNodeInserted` event to get an event for when it's added to the document by your code.
$('body').on('DOMNodeInserted', 'select', function () {
//$(this).combobox();
});
$('<select>').appendTo('body');
$('<select>').appendTo('body');
Fiddled here: http://jsfiddle.net/Codesleuth/qLAB2/3/
EDIT: after reading around I just need to double check `DOMNodeInserted` won't cause problems across browsers. This question from 2010 suggests IE doesn't support the event, so test it if you can.
See here: [link] Warning! the DOMNodeInserted event type is defined in this specification for reference and completeness, but this specification deprecates the use of this event type.
Problem
I need to be able to dynamically create `<select>` element and turn it into jQuery `.combobox()`. This should be element creation event, as opposed to some "click" event in which case I could just use jQuery `.on()`. So does something like this exist? ``` $(document).on("create", "select", function() { $(this).combobox(); } ``` I'm reluctant to use livequery, because it's very outdated. UPDATE The mentioned select/combobox is loaded via ajax into a jQuery colorbox (modal window), thus the problem - I can only initiate combobox using colorbox `onComplete`, however on change of one combobox another select/combobox must be dynamically created, therefor I need a more generic way to detect creation of an element (`select`in this case). UPDATE2 To try and explain the problem further - I have `select/combobox` elements created recursively, there is also a lot of initiating code inside `.combobox()`, therefore if I used a classic approach, like in @bipen's answer, my code would inflate to insane levels. Hope this explains the problem better. UPDATE3 Thanks everyone, I now understand that since deprecation of `DOMNodeInserted` there is a void left in DOM mutation and there is no solution to this problem. I'll just have to rethink my application.