I'm guessing that the reason .load() has to be used for elements associated with a URL is that it relies on the communication protocol to know when something has "loaded", i.e. when the http request has completed. Each image element requires a separate get request by the browser, so .load works for these. A div does not require a get request, so .load() makes no sense for them.
An alternative way of expressing "element associated with a URL" would be "replaced elements". However, I don't know if images containing base64 encoded data as its src attribute rather than a URL are still concidered replaced or not. Perhaps this is the reason they chose an alternative wording. On the other hand, I don't know if .load() would work with a base64 encoded data source either.
You could put your .load handler on the image element, or you could go with the dom ready function instead, depending on what you want to do.