Обычно я создаю проект Модульного теста (Файл-> Новый-> Другой-> Модульный тест-> Тестовый проект). Это содержит материал, в котором я нуждаюсь так, это было достаточно хорошо до сих пор.
я использую Дельфи 2007, таким образом, я действительно не знаю, доступно ли это в 2006.
Используйте LiveQuery (плагин jQuery) и прикрепите событие загрузки к элементу ur dom (h1), в данном случае.
попробуйте перезаписать метод добавления, чтобы можно было добавить собственное событие?
jQuery.extend(jQuery.fn, {
_append: jQuery.fn.append,
append: function(j) {
this._append(j);
j.trigger('append');
}
});
var el = jQuery('<h1>HI HI HI</H1>');
el.one('append', function(e) {
window.alert('loaded');
});
jQuery('body').append(el);
Если тег создается с помощью ajax, вы можете использовать связанный узел для подписки на событие ajaxSuccess.
http://docs.jquery.com/Ajax/ajaxSuccess
$('#somenode').ajaxSuccess(function(){
if ($('h1').length > 0) { ... }
});
Если он просто добавляется в DOM локальным сценарием, я не уверен, что можно наблюдать его создание, за исключением использования таймера для опроса.
Я не знаю, существует ли этот тип события, на ум приходит создание события "el-load" на основе этого учебника, а затем расширение " добавить ", чтобы узнать, есть ли у элемента это событие, чтобы вызвать его.
В зависимости от браузеров, которые вам нужно поддерживать, существуют события DOMNodeInserted и DOMNodeInsertedIntoDocument. . Я не могу поручиться за то, насколько хорошо они работают, но теоретически вы можете привязаться к этим событиям, а затем либо проверить новый узел и возможное поддерево, которое было вставлено, либо просто снова проверить весь документ с помощью $ (селектора) по вашему выбору, чтобы обнаружите узел, который вы ждете, чтобы увидеть его добавленным.
Попробуйте следующее:
var el = jQuery('<h1>HI HI HI</H1>');
jQuery('body').append(el);
setTimeout(function(){
window.alert('loaded');
},1000);//delay execution about 1 second
или, чтобы быть в безопасности, вот этот:
var el = jQuery('<h1>HI HI HI</H1>');
jQuery('body').append(el);
window.checker = setInterval(function(){
if($('someselector').length>0){ //check if loaded
window.alert('loaded');
clearInterval(window.checker);
}
},200);
в основном это будет повторяться каждые 200 мс, пока селектор не получит результат, и завершит цикл, когда результат станет доступен
Я хочу прикрепить функцию к элементу jQuery, которая запускается всякий раз, когда элемент добавляется на страницу.
Вам нужен плагин livequery , который делает именно это. Последняя функция live
похожа, за исключением того, что она не будет вызывать вас при добавлении элемента. Мы пользуемся им постоянно - отлично работает.
Вы будете использовать $ ('h1'). Livequery (function () {alert ('только что добавлено');});