Javascript 在显示之前检查损坏的外部图像错误
在显示之前,我使用jQuery检查外部图像是否存在。这是我的密码: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
<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的回答)
- 展示集装箱
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的回答)
- 展示集装箱
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的回答)
- 展示集装箱
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的回答)
- 展示集装箱
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动态加载的部分。很抱歉给你带来了困惑。