Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在显示之前检查损坏的外部图像错误_Javascript_Jquery - Fatal编程技术网

Javascript 在显示之前检查损坏的外部图像错误

Javascript 在显示之前检查损坏的外部图像错误,javascript,jquery,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

在显示之前,我使用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>

$(“.room image”).error(函数(){
$(this.parent().remove();
});
$(“.room image”).parent().removeClass('hidden');

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


我该如何做一次,这样用户就不会看到任何动态删除的内容?谢谢。

对于死/空内容的前端管理是一种糟糕的设计师习惯

您可以构建一个函数来:

  • 隐藏外箱
  • 仅渲染可访问的图像(请参见Arun P Johny的回答)
  • 展示集装箱
用户Arun p Johny也一个接一个

我根据你的需要编辑

function mainFunction() {
    function hideContainer(){
       // hide the outter container
    }
    function removeBroken(){
       // remove broken images like upper answer
    }
    function showContainer(){
       // you guessed
    }
    $.when(hideContainer()).done(removeBroken).done(showContainer);
}


如果您希望只执行一次,这样用户就不会看到任何动态删除的内容,那么您必须在服务器端执行此操作。

对死/空内容进行前端管理是一种糟糕的设计习惯

您可以构建一个函数来:

  • 隐藏外箱
  • 仅渲染可访问的图像(请参见Arun P Johny的回答)
  • 展示集装箱
用户Arun p Johny也一个接一个

我根据你的需要编辑

function mainFunction() {
    function hideContainer(){
       // hide the outter container
    }
    function removeBroken(){
       // remove broken images like upper answer
    }
    function showContainer(){
       // you guessed
    }
    $.when(hideContainer()).done(removeBroken).done(showContainer);
}


如果您希望只执行一次,这样用户就不会看到任何动态删除的内容,那么您必须在服务器端执行此操作。

对死/空内容进行前端管理是一种糟糕的设计习惯

您可以构建一个函数来:

  • 隐藏外箱
  • 仅渲染可访问的图像(请参见Arun P Johny的回答)
  • 展示集装箱
用户Arun p Johny也一个接一个

我根据你的需要编辑

function mainFunction() {
    function hideContainer(){
       // hide the outter container
    }
    function removeBroken(){
       // remove broken images like upper answer
    }
    function showContainer(){
       // you guessed
    }
    $.when(hideContainer()).done(removeBroken).done(showContainer);
}


如果您希望只执行一次,这样用户就不会看到任何动态删除的内容,那么您必须在服务器端执行此操作。

对死/空内容进行前端管理是一种糟糕的设计习惯

您可以构建一个函数来:

  • 隐藏外箱
  • 仅渲染可访问的图像(请参见Arun P Johny的回答)
  • 展示集装箱
用户Arun p Johny也一个接一个

我根据你的需要编辑

function mainFunction() {
    function hideContainer(){
       // hide the outter container
    }
    function removeBroken(){
       // remove broken images like upper answer
    }
    function showContainer(){
       // you guessed
    }
    $.when(hideContainer()).done(removeBroken).done(showContainer);
}

如果您想执行一次,这样用户就不会看到任何动态删除的内容,那么您必须在服务器端执行此操作。

试试看

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();
            }
        }
    });
})
演示:

试试看

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();
            }
        }
    });
})
演示:

试试看

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();
            }
        }
    });
})
演示:

试试看

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();
            }
        }
    });
})


演示:

如果我在服务器端获得图像,我必须获得两次。谢谢你准备这个提琴。这些图像是外部图像,不是在服务器上。如果我在服务器端做的话,我必须得到两次图像。谢谢你准备这个提琴。这些图像是外部图像,不是在服务器上。如果我在服务器端做的话,我必须得到两次图像。谢谢你准备这个提琴。这些图像是外部图像,不是在服务器上。如果我在服务器端做的话,我必须得到两次图像。感谢您准备小提琴。这些图像是外部图像,而不是在服务器中。注意:这些图像是外部的。所以我仍然看到它被动态删除。更新的问题。很抱歉造成混淆。请注意:这些图像是外部的。所以我仍然看到它被动态删除。更新的问题。很抱歉造成混淆。请注意:这些图像是外部的。所以我仍然看到它被动态删除。更新的问题。很抱歉造成混淆。请注意:这些图像是外部的。所以我仍然看到它被动态删除。更新的问题。抱歉造成混淆。不在中,因为它是使用ajax.Updated动态加载的部分。抱歉造成混淆。不在中,因为它是使用ajax.Updated动态加载的部分。抱歉造成混淆。不在中,因为它是使用ajax.Updated动态加载的部分。抱歉造成混淆。不在中,因为它是使用ajax.Updated动态加载的部分。很抱歉给你带来了困惑。