如果损坏图像,隐藏li
Hide li if broken image
我有一个图像列表,其中每个图像都封装在li:中
<li><a href='http://www.so.com'><img src='http://www.so.com/1.jpg'></a></li>
如果图像1.jpg被破坏,就好像它从未存在于DOM中一样,我如何隐藏整个li?
我发现了一些关于如何隐藏图像的好js,并从另一篇SO帖子中了解到我想要display:none
,这样我就不会创建空行。但我很难把这些放在一起。
您可以对图像使用onerror
处理程序:
<li><a href='http://www.so.com'>
<img src='http://www.so.com/1.jpg' onerror='hideContainer(this)'>
</a></li>
// this function must be in the global scope
function hideContainer(el) {
$(el).closest("li").hide();
}
或者,如果你真的想要它,你甚至可以把它删除,就好像它从未存在于DOM中一样:
// this function must be in the global scope
function hideContainer(el) {
$(el).closest("li").remove();
}
如果你不想在HTML中放置onerror
处理程序(这是你唯一可以放置它的可靠位置),那么你可以在最初隐藏图像,然后在jQuery运行时检查.complete
,如果图像还没有完成,那么安装一个.load()
处理程序,如下所示:
CSS:
/* use some more specific selector than this */
li {display: none;}
jQuery:
$("li img").each(function() {
if (this.complete) {
// img already loaded successfully, show it
$(this).closest("li").show();
} else {
// not loaded yet so install a .load handler to see if it loads
$(this).load(function() {
// loaded successfully so show it
$(this).closest("li").show();
});
}
});
在jQuery中有.error事件处理程序http://api.jquery.com/error/.
示例:
$('img').error(function(event) {
$(this).closest('li').hide();
});
使用jQuery,您可以将<li>
设置为仅在<img>
加载时加载。请在这里阅读。
HTML开始时为:
<li style="display: none;"><a href='http://www.so.com'><img src='http://www.so.com/1.jpg' id="imgOne" class="imgSet"></a></li>
如果它是一个组的一部分,可以给它一个类,如果它非常具体,并且你只想要一个ID,或者如果你愿意,可以选择页面上的所有图像。在我的例子中,我将使用类来选择它作为一个组。
jQuery:
$('.imgSet').load(function() {
$(this).parents('li').show();
});
基本上它是隐藏的,直到图像加载。
您可以使用这个:
<img id='any' src="https://invalid.com" onerror="document.getElementById(this.id).remove()" >
错误时处理图像,如果找不到,则获取其id并将其从DOM 中删除
相关文章:
- 在bootstrap中显示隐藏特定的li
- 隐藏/显示包含单词的ul li项目.但只能入住李的子女
- 修复列表的绝对位置(li's隐藏在前两个后面)
- 如何在应用切换点击功能之前,默认情况下在页面加载时隐藏带有特定类的ul-li
- 如果 li 少于 3 个字符,请隐藏
- 显示/隐藏具有不同类的li元素
- 如果损坏图像,隐藏li
- Tabindex Dosent隐藏li标签的内容
- 隐藏/显示li's列表以及if语句和document.write
- 灯箱“下一个”功能仍然显示已隐藏的元素 (li) 显示:无;
- 如何在 LI 中强制 DIV(带有溢出隐藏样式)仍然显示
- 通过列出 ID,只有 ID 隐藏而不完全 LI
- UL LI点击正在隐藏UL
- 如果id不在JSON中,如何使用jQuery隐藏li标记
- 在列表中存在隐藏li的情况下,在li上应用备用类,而不使用:visible
- 如何在html css和jquery上创建一个响应式菜单,逐个隐藏li元素
- 如何在单击radio时隐藏li
- 使用子元素隐藏li元素'的信息
- jQuery隐藏li标签
- jQuery隐藏li元素,然后在按钮悬停时淡入