jQuery 使用 .load 同步加载图像

发布于 2024-11-28 23:41:43 字数 496 浏览 0 评论 0原文

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 函数的异步行为。有解决方法的想法吗?我希望该函数还表明是否给定远程图像是否存在。

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;

}

This function always returns 0 :(

I guess that I can't overwrite the global variable (retval) because of the asynchronously behavoir of the .load function. Any ideas for a workaround? I namely would like that the function also indicates if the given remote image exist or not.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

晌融 2024-12-05 23:41:43

试试这个:

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;

}

在完成加载和附加本身之后,您正在绑定事件处理程序(加载和错误)。

编辑:删除了从事件返回值的建议(当然不起作用)

try this:

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;

}

You're binding event handlers (load and error) after you've done the loading and appending itself.

EDIT: removed suggestion to return the value from the events (won't work ofcourse)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文