将每个<img/>标记替换为其自定义数据属性

时间:2015-07-10 06:28:33

标签: javascript jquery html

如何在html消息中替换每个<img>标记,并将unicode值存储为自定义属性。

示例消息:

<img data-uni-val="&#x1F603;" src="path/to/img1.png" class="emoji"/>hello,
<br /> <img data-uni-val="&#1F604;" src="path/to/img2.png" class="emoji"/>

我需要将每个表情符号<img>替换为其存储为自定义属性的unicode值。

$('<div />')
.html(chatText).find('img.emoji')
.replaceWith('someval').end().html()

使用上面的代码我可以找到并用字符串替换每个img,但不能用data-uni-val替换。

我试过了:

$('<div />').html(chatText).find('img.emoji')
.replaceWith($(this)
.data('data-uni-val')).end().html()

有没有简单的方法可以解决这个问题?

5 个答案:

答案 0 :(得分:3)

您的代码的主要问题是应使用for (var i = 0; i < f.legs.length; i++) { routeSegment += 1; summaryPanel.innerHTML += "<b>Route Segment: " + routeSegment + "</b><br />"; summaryPanel.innerHTML += f.legs[i].distance.text + "<br /><br />"; l += f.legs[i].distance.text dis.push(l); callback( dis ); } function callback(result) { // code that depends on 'result' alert(result); } 访问属性final DateFormat format = new SimpleDateFormat("MMMM dd"); final Date d = format.parse("August 27");

此外,您只需使用data-uni-val即可执行转换。

&#13;
&#13;
$(this).data('uni-val')
&#13;
.replaceWith(fn)
&#13;
&#13;
&#13;

答案 1 :(得分:2)

在jQuery中,.data()函数使用与您在元素标记中使用的名称不同的“名称”。这是一个没有'数据'且没有连字符的camelCase。

尝试.data('uniVal')

答案 2 :(得分:1)

$('.emoji').each(function(){
   var str = $(this).attr('data-uni-val');
   $(str).insertAfter($(this));
   $(this).remove();
});

答案 3 :(得分:0)

$("div img").each(function(){
$(this).removeClass('emoji').addClass($(this).attr('data-uni-val'));
});

答案 4 :(得分:0)

看看这是不是你想要的:

jQuery('.emoji').each(function(){
var str = jQuery(this).attr('data-uni-val');
jQuery(this).replaceWith(str);
});
相关问题