我想基于包含一些img标签(即表情符号)的段落的内容动态生成输入字段,并希望用等效字符串替换这些图像(整个img标签)(例如:)< /强>)
我尝试了以下功能,但它没有按预期工作。 (即使我提醒数据并将其用于更换) 此外,由于我有很多图像,我认为用jQuery查找和替换字符串中的整个标记会有更好的方法。有什么想法吗?
TXT = convertSmiley(TXT);
var convertSmiley = function(data) {
data = data.replace('<img src="/images/smiley/happy.png" style="margin-bottom:-4px;" height="16" width="16">',':)'); // which does not seem to work
return data;
}
答案 0 :(得分:0)
答案 1 :(得分:0)
Chamika Sandamal 给了你答案。你应该能够弄清楚自己,cmon!
var convertSmiley = function(img, smiley) {
img.replaceWith('<span>'+ smiley +'</span>');
};
convertSmiley($('#happy'), ':)');
答案 2 :(得分:0)
首先,按照描述使用jQuery的replaceWith
。它简单得多。
但是,如果您拥有原始html文本,并且您知道表情符号文件的名称,则可以执行以下操作:
function convertEmoticons(text) {
var lookup = {
"happy": ":)",
"sad": ":("
// etc..
}, regex, name, names = [];
for( name in lookup ) names.push(name);
regex = new RegExp('<img src="/images/smiley/(' + names.join("|") + ').png"[^>]*>', "gim");
return text.replace( regex, function(tag, name) {
return lookup[name];
});
}
或者您可以将上述部分用于replaceWith
:
function convertEmoticons(element) {
var lookup = {
"happy": ":)",
"sad": ":("
// etc..
}, name;
for( name in lookup )
$(element).find('img[src$="'+name+'.png"]').replaceWith(lookup[name]);
}