我有每個圖像被包裹在一個李圖像列表:隱藏李若跌破圖像
<li><a href='http://www.so.com'><img src='http://www.so.com/1.jpg'></a></li>
如何隱藏這整個李如果圖像1.JPG被打破,好像它從來沒有在DOM中存在過?
我發現一些很好的js如何hide the image和從another SO post瞭解到我想display:none
所以我不創建一個空行。但是我很難將這些放在一起。
我有每個圖像被包裹在一個李圖像列表:隱藏李若跌破圖像
<li><a href='http://www.so.com'><img src='http://www.so.com/1.jpg'></a></li>
如何隱藏這整個李如果圖像1.JPG被打破,好像它從來沒有在DOM中存在過?
我發現一些很好的js如何hide the image和從another SO post瞭解到我想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();
}
如果你不想把一個onerror
處理程序放入HTML(唯一可靠的地方,你可以把它),那麼你可以最初隱藏圖像,然後檢查.complete
何時您的jQuery的運行,如果圖像尚未完成,然後安裝一個處理程序是這樣的:
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();
});
這有幾個問題。1)這隻會處理有錯誤的第一個img。 2)'this'不是一個jQuery對象。 3)在運行jQuery來安裝錯誤處理程序之前,可能會發生錯誤。 – jfriend00
@ jfriend00我修改了它。 – KrishnaDhungana
@KrishnaDhungana非常感謝您對此的評價。 – Chris
使用jQuery你可以設置你<li>
加載只有當<img>
負荷。 Read along here.
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();
});
基本上它的隱藏圖像加載到。
你可以把這個問題搞成一個jsfiddle嗎? – karthikr
@karthikr我現在就開始處理這個問題,並用鏈接編輯問題。謝謝你,好主意。 – Chris
http://jsfiddle.net/H7Aq7/6/ – Chris