Вы можете вызвать событие (или его обработчик) напрямую, вызвав .trigger()
или .load()
.
Если вы знаете, что хотите событие, потому что вы знаете, что изображения уже загружены, то вы можете сделать это следующим образом:
$('#img1').load(function() {
alert('foo');
})
.trigger('load'); // fires the load event on the image
Если вы запускаете свой сценарий на готовом документе или в какой-то момент, когда еще не ясно, есть ли изображения там или нет, то я бы использовал что-то вроде этого:
$('img.static')
.load(function(){
alert('foo');
return false; // cancel event bubble
})
.each(function(){
// trigger events for images that have loaded,
// other images will trigger the event once they load
if ( this.complete && this.naturalWidth !== 0 ) {
$( this ).trigger('load');
}
});
Имейте в виду, что событие загрузки вспыхивает (jQuery 1.3), и вы, возможно, преждевременно запускаете обработчик загрузки документа, если вы не отмените всплывающее окно в обработчике img.
Для справки: решение для запуска img.src=img.src
, к сожалению, не будет работать правильно в Safari. Вам нужно будет установить src
на что-то другое (например, # или about: blank), а затем вернуться для перезагрузки.