将img替换为其数据属性值

时间:2018-10-09 20:36:11

标签: javascript jquery

var t = "";
$("div.postswrapper[data-value="+id2+"]").find("div.text.mainpost").children("p").each(function(p){
    t+= $(this).text().trim()+"\n";
});

我现在有这个,它的工作是获取所有段落标签并将它们添加到字符串中。很简单现在我最难的部分是:

段落中可能包含0到n个img标签。例如

<p>hello<img src='https.imgur/image.png' data-raw='[img]https.imgur/image.png[/img]'>world!</p>

每个标签中都有一个字符串,其中包含一些原始数据,我需要将这些图像替换为字符串。例如,上面是

你好[img] https.imgur / image.png [/ img]世界!

我尝试过

t+= $((this).find('img').replaceWith($(this).find('img').attr('data-raw')).text()).text().trim()+"\n";

但由于(this).find函数在当前上下文中不存在而失败,这很可怕

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

使用find查找img标签,然后使用replaceWith函数

 var t = "";
$("div.postswrapper[data-value="+id2+"]").find("div.text.mainpost").children("p").each(f unction(p){
p.find('img').replaceWith(function() { return this.data-raw;     });
 t+= $(this).text().trim()+"\n";
});

答案 1 :(得分:0)

请尝试以下操作:

var images = document.querySelectorAll('[data-raw]');
Array.from(images).forEach((image) => {      
  image.parentElement.replaceChild(
    document.createTextNode(image.getAttribute('data-raw')), 
    image
  );
})

答案 2 :(得分:0)

当您说原始时,您是指图像数据的base-64编码吗?

所以您的代码可能像这样工作: $("div.postswrapper[data-value="+id2+"]").find("div.text.mainpost").children("p").each(function(p){ p.find('img').attr('src', `data:image/png;base64, ${this.data-raw}`); }); t+= $(this).text().trim()+"\n"; });