用字符串中的字符串替换整个标签

问题描述:

我想基于包含一些img标签(即表情符号)的段落内容动态生成输入字段,并且想用一个字符串替换这些图像(整个img标签)等价字符串(例如:)用字符串中的字符串替换整个标签

我试过下面的函数,它只是不按预期工作。 (即使我提醒数据并将其用于替换) 此外,由于我有很多图像,我认为会有更好的方法来查找和替换字符串中的整个标签。任何想法?

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

什么的'TXT = convertSmiley(TXT);',它在哪儿来的?顺便说一句,如果它没有被宣布之前你缺少'var'。另外,你可以发布的HTML? – elclanrs 2012-02-12 06:45:05

+0

TXT只是一个已经声明的字符串!和“当然”它包含一个字符串(如评论)顺便说一句,感谢您的解释(S):) – BehnUm 2012-02-12 06:52:46

你可以使用jQuery replaceWith()

http://jsfiddle.net/gPgr5/


更新

通过图像SRC选择,使用$('img[src$="happy.png"]')

http://jsfiddle.net/gPgr5/1/

+0

恐怕这是一种泛型。如果我想用不同的代码替换不同的图像,如happy.png与:)和sad.png:( – BehnUm 2012-02-12 06:50:12

+0

@behnum:请参阅更新后的答案 – 2012-02-12 07:02:50

+0

谢谢,现在可以运行 – BehnUm 2012-02-12 07:07:55

Chamika Sandamal给你答案。你应该能够弄清楚你的自我,cmon!

var convertSmiley = function(img, smiley) { 
    img.replaceWith('<span>'+ smiley +'</span>'); 
}; 

convertSmiley($('#happy'), ':)'); 
+0

对不起朋友,但它没有按预期工作。问题是我必须提供你声明的那些参数和一段原始字符串;加上你的功能看起来很奇怪。你能否将字符串中的“img SELECTOR”传递给函数? – BehnUm 2012-02-12 07:02:52

+0

然后你必须解析字符串。看看** Flambino **回答。是的,你可以将jQuery对象传递给函数,如果这就是你的意思http://jsfiddle.net/elclanrs/LH8bm/1/ – elclanrs 2012-02-12 07:08:06

+0

:)好吧,但这又是一个通用的方法和不同的东西!用字符串替换img标签。问题是武装该功能,以便能够区分不同的图像,并用相应的文本替换它们。无论如何,Flambino更新了他的答案,现在它可以工作。看一看 – BehnUm 2012-02-12 07:18:20

首先,如上所述去找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]); 
}