14

I'd like to trigger an event when an element is created.

$(document).on('load','#TB_title',function() {
    console.log('loaded');
});

Is there an equivalent of this that works?

I saw some people suggest livequery, but that seems heavy.

Thanks.

rpophessagr
  • 905
  • 3
  • 10
  • 17

2 Answers2

6

I don't think such thing exist directly, but you can handle the DOMSubtreeModified event and wait until you can find element with such ID:

var _elementToFind = "TB_title";
var _elementFound = false;
var _counter = 1;
$(document).bind("DOMSubtreeModified", function(evt) {
    if (_elementFound)
        return;
    if ($("#" + _elementToFind).length > 0) {
        alert("element '" + _elementToFind + "' created");
        _elementFound = true;
    }
});

Live test case.

The downside is that it's not supported by Opera and IE less than 9 - see here the full details.

Shadow The GPT Wizard
  • 66,030
  • 26
  • 140
  • 208
3

You can trigger a global custom event:

$(document).on('load','#TB_title',function() {
  $.event.trigger('nameOfCustomEvent');  
});

$('#element').bind('nameOfCustomEvent', function(){
  console.log(this);
});
osahyoun
  • 5,173
  • 2
  • 17
  • 15