JQuery Загрузка изображений синхронно с.load

function loadImage(url) {

    var retval=0;

    var img = new Image();

    $(img).attr('src', url)
          .appendTo("#test")
          .load( function() {
                $(this).hide().fadeIn();
                retval=true;
          })
          .error( function() {
              $(this).remove();
              retval=false;
          });

    return retval;

}

Эта функция всегда возвращает 0:(

Я предполагаю, что не могу перезаписать глобальную переменную (retval) из-за асинхронного поведения функции.load. Есть идеи для обхода? Мне бы хотелось, чтобы эта функция также указывала, существует ли данное удаленное изображение или нет.

1 ответ

Попробуй это:

function loadImage(url) {

var retval=0;

var img = new Image();

$(img).load( function() {
            $(this).hide().fadeIn();
            retval=true;
      })
      .error( function() {
          $(this).remove();
          retval=false;
      })
      .attr('src', url)
      .appendTo("#test")
      ;

return retval;

}

Вы связываете обработчики событий (load и error) после того, как сделали загрузку и добавили себя.

РЕДАКТИРОВАТЬ: удалено предложение вернуть значение из событий (не работает, конечно)

Другие вопросы по тегам