Chr*_*ris 5 html javascript css jquery
我有一个图像列表,其中每个图像都包裹在li中:
<li><a href='http://www.so.com'><img src='http://www.so.com/1.jpg'></a></li>
Run Code Online (Sandbox Code Playgroud)
如果图像1.jpg被打破就好像它从未存在于DOM中,我怎么能隐藏整个li?
我找到了一些关于如何隐藏图像并从我想要的另一个SO帖子中学到的好js ,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();
}
Run Code Online (Sandbox Code Playgroud)
或者,您甚至可以删除它,如果您真的想要它,就好像它从未存在于DOM中:
// this function must be in the global scope
function hideContainer(el) {
$(el).closest("li").remove();
}
Run Code Online (Sandbox Code Playgroud)
如果您不想onerror在HTML中放置处理程序(您可以放置它的唯一可靠位置),那么您可以最初隐藏图像,然后检查.completejQuery何时运行以及图像是否尚未完成,然后安装.load()处理程序像这样:
CSS:
/* use some more specific selector than this */
li {display: none;}
Run Code Online (Sandbox Code Playgroud)
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();
});
}
});
Run Code Online (Sandbox Code Playgroud)