Все упоминали, что событие должно быть запущено до установки на src.
Но если вы не хотите беспокоиться об этом, вы можете использовать событие oncomplete
(будет запущено даже с кэшированными изображениями) для запуска onload
, например:
$("img").one("load", function() {
// do stuff
}).each(function() {
if(this.complete) $(this).load();
});
Используя jQuery, вам не нужно беспокоиться об обратной совместимости (например: img.height>0
in IE
)