2010-02-02 2 views
0

Когда я хочу что-то должно произойти, когда изображение загружается я использую

$ ("# изображение") нагрузка (функция() {что-то})..;

  • но ни в чем кроме Firefox это работает только при первом загрузке изображения. Например, если я создал галерею изображений и хочу, чтобы что-то случилось, когда загружено изображение, я использую .load, и он работает в первый раз: но если пользователь перетасовывает изображение (это уже в кеше), событие не запускается в Opera, IE и т. д.

Один из способов исправить это - добавить случайное число к изображению src, но это занимает дополнительную полосу пропускания, потому что оно должно загрузить изображение снова (справа?).

Есть ли хорошие решения для этого?

ответ

2

Используйте .complete проверку:

$("#image").each(function() { 
    if(this.complete) doSomething(); //Runs immediately, image ready (cached) 
    else $(this).load(function() { doSomething(); }); //Will run when loaded 
}); 
+0

Я думаю, что это сработает. Благодаря! – Allan

+0

Похоже, что присвоение .load() на изображении не работает с браузером Opera –

1

Я на самом деле добавить еще один способ:

Это не было сделано мной, к сожалению, я не знаю, оригинальный мозг за этим:

$('#image').one('load',function() { 
so_something(); 
}).each(function() { 
if(this.complete) $(this).trigger('load'); 
}); 
Смежные вопросы