javascript - 显示前检查损坏的外部图像错误

标签 javascript jquery

我正在使用 jQuery 在显示外部图像之前检查它是否存在。这是我的代码:

<a href="#" class="gallery hidden">
  <img src="//abc.com/1.jpg" class="room-image">
</a>
<a href="#" class="gallery hidden">
  <img src="//xyz.com/2.jpg" class="room-image"> <!-- not found -->
</a>
<a href="#" class="gallery hidden">
  <img src="//def.com/3.jpg" class="room-image"> <!-- not found -->
</a>
<a href="#" class="gallery hidden">
  <img src="//mno.com/4.jpg" class="room-image">
</a>


<script type="text/javascript">
  $(".room-image").error(function(){
    $(this).parent().remove();
  });
  $(".room-image").parent().removeClass('hidden');
</script>

jsFiffled here

我想检查所有图像,删除损坏的图像,然后显示其余图像。但我编写的这个脚本几乎会立即执行,因为 .removeClass().error() 运行得更快。这会导致 View 将损坏的图像一一删除。

如何执行一次,以便用户看不到任何动态删除的内容?谢谢。

最佳答案

尝试

jQuery(function () {
    $(".room-image").error(function () {
        $(this).parent().remove();
    }).on('load', function () {
        $(this).parent().removeClass('hidden');
    }).each(function () {
        //to handle image which are already loaded - before page load
        if (this.complete) {
            if (this.width) {
                $(this).parent().removeClass('hidden');
            } else {
                $(this).parent().remove();
            }
        }
    });
})

演示:Fiddle

关于javascript - 显示前检查损坏的外部图像错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20696196/

相关文章:

javascript - 尽管看似正确的调用,但不会显示 Angular Bootstrap 模式对话框

javascript - 如何修复 window.CKFinder 未定义

javascript - 等待图像加载插件不起作用

javascript - 如何将默认文本添加到 HTML <select>?

javascript - jQuery AJAX 提交表单

javascript - 通过 Nashorn javascript jjs 进行 JMX 连接

javascript - Angular 访问范围属性

jquery:速记 - 对多个 id 不显示任何内容

jquery - 智能向导中的等高步进按钮

jquery - 当元素再次离开屏幕时使用 jQuery 执行操作?