Retrigger $ (). Событие загрузки в jQuery - PullRequest
0 голосов
/ 02 февраля 2010

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

$ ("# изображение"). Load (function () {что-то});

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

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

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

Ответы [ 2 ]

2 голосов
/ 02 февраля 2010

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

$("#image").each(function() {
  if(this.complete) doSomething(); //Runs immediately, image ready (cached)
  else $(this).load(function() { doSomething(); }); //Will run when loaded
});
1 голос
/ 05 февраля 2010

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

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

$('#image').one('load',function() {
 so_something();
}).each(function() {
 if(this.complete) $(this).trigger('load');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...