主要,我的消息(div)包含两个相同的图像,其中包含src=""
标记内的二进制内容。通过单击按钮,我必须从整个消息中踢出src=""
属性。我使用.replace()
方法使用/g
修饰符进行了此操作,但它仅替换了最后一次出现。
我的模式是:
$("#event-1").html().replace(/<img\s+id="(.+)"\s+class="(.+)"\s+src=".+">/g, "<img id=\"$1\" class=\"$2\">");
// It's easy-just rewrite <img> without src attr
源消息是:
Hello!
<img id="Chrysanthemum.jpg" class="attachImg" src="data:image/jpeg;base64,/9j/4AAQS">
<img id="Chrysanthemum.jpg" class="attachImg" src="data:image/jpeg;base64,/9j/4AAQS">
应该成为:
Hello!
<img id="Chrysanthemum.jpg" class="attachImg">
<img id="Chrysanthemum.jpg" class="attachImg">
但我得错了结果:
<img id="Chrysanthemum.jpg" class="attachImg" src="data:image/jpeg;base64,/9j/4AAQS">
<img id="Chrysanthemum.jpg" class="attachImg">
由于图像的src,唯一的想法是它为什么会发生太大的源字符串。 你有任何想法如何解决这个问题?
答案 0 :(得分:3)
id
必须是唯一的,您需要使用类:
<img class="attachImg Chrysanthemum" src="data:image/jpeg;base64,/9j/4AAQS" />
<img class="attachImg Chrysanthemum" src="data:image/jpeg;base64,/9j/4AAQS" />
然后您可以使用 .removeAttr() :
从匹配元素集中的每个元素中删除一个属性。
$("#event-1").find('.Chrysanthemum').removeAttr('src');
答案 1 :(得分:2)
为什么不呢
$("#event-1 img").removeAttr('src');
答案 2 :(得分:1)
您需要使.+
量词非贪婪,以防止正则表达式跨越两个图像。
/<img\s+id="(.+?)"\s+class="(.+?)"\s+src=".+?">/g
^ ^ ^
但我同意其他建议使用removeAttr
删除该属性的回答者。