在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/數(shù)據(jù)庫  HTML/ 多張圖片onload需要一個個生成new Image() ?

多張圖片onload需要一個個生成new Image() ?

問題描述

v-html 時對html內(nèi)容里的img寬度做限制,圖片的onload需要一個個生成new Image() 嗎

原先的寫法只能改變第一張

mounted: function () {
    this.$nextTick(function () {
        var Img = new Image();
        var imgs = $("#infoContent p img");
        imgs.each(function (i, v) {
            Img.src = v.src;
            Img.onload = function() {
                if ($(v).width() > 630) {
                    $(v).css('width', '100%');
                }                                    
            }
        })
    })
}

更改后的

mounted: function () {
    this.$nextTick(function () {
        var imgs = $("#infoContent p img"), Img = [];
        imgs.each(function (i, v) {
            Img[i] = new Image();
            Img[i].src = v.src;
            Img[i].onload = function() {
                if ($(v).width() > 630) {
                    $(v).css('width', '100%');
                }
            }
        })
    })
}

需要對每個img都new一下 有沒有更好的寫法

回答
編輯回答
故林

原本是建議用ref操作的,不過看到你是用v-html這個方案就不可行了,不知道你的html是后端提供的還是自己拼接的,如果可以在img上面直接加一個方法就能很簡單的實現(xiàn)你的需求了。

data() {
  return {
    html: '<img src="xxx" onload="onImgLoad(this)">',
  }
},

在vm外面定義一個全局函數(shù)來處理

window.onImgLoad = (el) => {
  if (el.width > 630) {
    el.style.width = '100%'
  }
}
2017年2月11日 20:35
編輯回答
逗婦乳

應(yīng)該能用css做到 試過max-width
還有你這jq混寫

2018年9月9日 12:41