2012-02-13 4 views
11

Я хотел бы вызвать событие при создании элемента.Событие jQuery, когда элемент создан

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

Есть ли эквивалент этого, который работает?

Я видел, как некоторые люди предлагали livequery, но это кажется тяжелым.

Спасибо.

+0

Примечание: #TB_title не является iframe. – rpophessagr

+0

Пожалуйста, используйте «когда элемент создан». Вы имеете в виду, когда элемент добавляется в DOM? –

+0

Да, я пытаюсь вызвать функцию после загрузки толстого ящика. – rpophessagr

ответ

3

использовать этот плагин: livequery

или посмотреть по этой ссылке;

How to detect new element creation in jQuery?

+0

iframe doesn ' t существует в DOM с самого начала, следовательно, использование on. – rpophessagr

+0

Примечание: #TB_title не является iframe – rpophessagr

+0

Это был ajaxComplete, который сделал трюк. – rpophessagr

2

Вы можете вызвать глобальное пользовательское событие:

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

$('#element').bind('nameOfCustomEvent', function(){ 
    console.log(this); 
}); 
+0

Триггер никогда не срабатывает, это проблема, о которой спрашивает ОП. –

5

Я не думаю, что такая вещь существует непосредственно, но вы можете справиться с DOMSubtreeModified события и ждать, пока вы не можете найти элемент с такими Код:

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.

Недостатком является то, что он не поддерживается Opera и IE менее 9 - see here.

Смежные вопросы