這篇文章主要介紹了jQuery圖片載入失敗替換預設圖片方法匯總,運用到的相關知識jquery的ready方法、$("img").error()、img的complete屬性、插件imagesLoaded、事件委託、事件擷取與圖片預先載入的方法等,需要的朋友可以參考下
本文主要討論頁面中圖片載入失敗後替換預設圖片的幾種方式
##重點來了:一定要記住error事件不冒泡。 相關的知識點:jquery的ready方法、$("img").error()、img的complete屬性、插件imagesLoaded、事件委託、事件擷取和圖片預先載入的方法等
1. 圖片載入失敗替換為預設圖片
#1.1 給圖片綁定error事件
當圖片載入失敗時會觸發error事件$("img").on("error", function () { $(this).attr("src", "../img/img.jpg"); });
當圖片載入失敗時complete屬性值為false,載入成功時true
$("img").each(function () { if (!this.complete || (typeof this.naturalWidth == "undefined" && this.naturalWidth == 0) || !this.src) { $(this).attr("src", "../img/img.jpg"); } });
document.addEventListener("error", function (e) {
var elem = e.target;
if (elem.tagName.toLowerCase() == 'img') {
elem.src = "../img/img.jpg";
}
}, true);
可以監聽到動態產生的img標籤
#imagesLoaded主要用來在手機端瀑布流方式來載入圖片,也可以用來處理圖片載入失敗替換為預設圖片
rrreee如果是動態新增的圖片,還是要重新判斷的
2. 圖片預先載入的方法// 用的是jQuery的deferred来实现的
$('img').imagesLoaded()
.always(function (instance) { // always事件,在所有图片都加载完成(成功与否不论)时触发
console.log('all images loaded');
})
.done(function (instance) { // done事件,在所有图片都加载成功时触发
console.log('all images successfully loaded');
})
.fail(function (instance) { // fail事件,在所有图片都加载完成,并且至少有一张图片加载失败时触发
console.log('all images loaded, at least one is broken');
})
.progress(function (instance, image) { // progress事件,在每一张图片加载完成时都触发一次
var result = image.isLoaded ? 'loaded' : 'broken'; // 判断当前图片加载成功与否
image.img.src = image.isLoaded ? image.img.src : "../img/img.jpg";
console.log('image is ' + result + ' for ' + image.img.src);
});
上面是我整理給大家的,希望今後會對大家有幫助。
相關文章:
在Webstorm中利用babel將ES6自動轉碼成ES5如何實作在Bootstrap4 Vue2中如何實現分頁查詢在vue2中透過keep-alive如何使用在webpack中有關於jquery外掛程式的環境配置(詳細教學)以上是在jQuery中有關圖片載入失敗問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!