用字符串中的字符串替换整个标签
我想基于包含一些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;
}
Chamika Sandamal给你答案。你应该能够弄清楚你的自我,cmon!
var convertSmiley = function(img, smiley) {
img.replaceWith('<span>'+ smiley +'</span>');
};
convertSmiley($('#happy'), ':)');
对不起朋友,但它没有按预期工作。问题是我必须提供你声明的那些参数和一段原始字符串;加上你的功能看起来很奇怪。你能否将字符串中的“img SELECTOR”传递给函数? – BehnUm 2012-02-12 07:02:52
然后你必须解析字符串。看看** Flambino **回答。是的,你可以将jQuery对象传递给函数,如果这就是你的意思http://jsfiddle.net/elclanrs/LH8bm/1/ – elclanrs 2012-02-12 07:08:06
:)好吧,但这又是一个通用的方法和不同的东西!用字符串替换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]);
}
什么的'TXT = convertSmiley(TXT);',它在哪儿来的?顺便说一句,如果它没有被宣布之前你缺少'var'。另外,你可以发布的HTML? – elclanrs 2012-02-12 06:45:05
TXT只是一个已经声明的字符串!和“当然”它包含一个字符串(如评论)顺便说一句,感谢您的解释(S):) – BehnUm 2012-02-12 06:52:46