Javascript / jQuery HasLoaded или аналогичный?

Я знаю, что в jquery можно вызывать функции javascript / jquery _1 _ / _ 2_, например, изображение (<img>).

Однако, если в jquery я использую .html(htmlString) для вставки изображения после загрузки dom, как я могу добавить слушателя для обработки события загрузки изображений? Есть ли свойство, которое я могу проверить, чтобы увидеть различные изображения и загружены ли они?


person maxp    schedule 17.05.2010    source источник


Ответы (2)


После добавления вашего html вы можете привязать событие загрузки к содержащимся изображениям:

$("#foo").html(htmlString).find("img").one("load", function() {
    ...
}).each(function() {

    // image has been cached, so load event won't fire unless we explicitly call it
    if(this.complete) $(this).trigger("load");
});
person karim79    schedule 17.05.2010
comment
Разве не было бы лучше создать изображение, а затем сразу же привязать его, чем выполнять такого рода избыточный выбор? - person James; 17.05.2010
comment
В этом случае не забудьте сделать .one('load', вместо .load(. @ J-P: Да, но тогда ты бы не ответил на вопрос .. - person Nick Craver; 17.05.2010
comment
@ J-P - Из вопроса я понял, что он хочет привязать load к изображениям, которые являются частью произвольной строки HTML. @Nick - ура, обновил что в ответ. - person karim79; 17.05.2010
comment
@ Ник, это правда. Но, похоже, мы все же должны хотя бы упомянуть об идеальном способе сделать что-то вроде этого ... вместо того, чтобы просто пассивно отвечать на прямые вопросы. - person James; 17.05.2010
comment
@ karim79, если это так, тогда ладно. - person James; 17.05.2010
comment
@ J-P - Что, если это контент, поступающий из запроса ajax для примера? Та же проблема, вам нужно выбрать изображения и привязать их. Обычно я согласен с тем, что есть лучшие альтернативные подходы, но этот вопрос, в частности, является очень частым явлением, в котором вы не можете изменить общий подход. - person Nick Craver; 17.05.2010

Проверьте свойство complete изображений.

person Josh Stodola    schedule 17.05.2010