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

时间:2012-02-12 06:41:35

标签: javascript jquery

我想基于包含一些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;
}

3 个答案:

答案 0 :(得分:0)

你可以使用jQuery replaceWith()

http://jsfiddle.net/gPgr5/


<强>更新

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

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

答案 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]);
}