【问题标题】:jquery replace broken image with noimage iconjquery用noimage图标替换损坏的图像
【发布时间】:2012-02-09 00:23:41
【问题描述】:

我有几个图像链接还没有任何图像,但我知道它们何时可用,它们将被命名为 pic1 和 pic2.jpg,所以我为 img 标签设置了图像 src。但是在图像可用之前,我不希望出现损坏图像的红十字,所以我有 noimage.jpg 图标应该替换所有损坏图像的 src。我正在使用它,它有点工作,但 noimage 图标在快速闪现损坏的图像红十字后替换损坏的图像。我们能不能完全阻止快速闪烁显示红十字损坏的图像,这样用户只能看到 noimage 图标..

$("img").error(function () {  
 $(this).unbind("error").attr("src", "noimage.gif"); }); 

【问题讨论】:

  • 它当前是否包含在 jQuery 文档就绪调用中?
  • 为什么不让图像在 DOM 加载时淡入?这应该可能会解决flash的问题,因为那时图像将被加载和替换
  • 在 document.ready() 里面{}如何让图像淡入??
  • 这是一个快速的方法stackoverflow.com/questions/92720/…

标签: javascript jquery image replace


【解决方案1】:

试试这个...

$(function() {
    $("img").one("load", function() {
        $(this).show();
    }).each(function() {
        if (this.complete) $(this).load();
    }).error(function () {  
        $(this).unbind("error").attr("src", "noimage.gif");
    }).hide();
});

在文档准备好时,它会隐藏每个图像,然后运行“加载”方法来显示它们,同时还包括您的错误处理代码。

【讨论】:

  • 成功了。希望它不会造成页面性能问题,是吗?
  • 上面的代码并不繁重,所以我不会担心。如果您谈论的是 1000 张图片,那么您所做的任何事情都会对性能产生影响。
  • 顺便说一句,如果您确实喜欢 JohnP 提到的图像淡入的想法,只需将 .show() 更改为 .fadeIn(interval-in-ms)。不过,这可能会对性能产生影响,因为任何元素的褪色都比简单的表演需要更多的努力。
猜你喜欢
  • 2015-12-11
  • 2010-09-10
  • 2014-08-08
  • 2014-06-28
  • 2013-04-20
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
相关资源
最近更新 更多