有没有办法改善这个臭名昭著的语法...(使用数组)?

$("#rte").val(function(i, v) {
    return v.replace(':)','<img src="rte/icons/emoticon_happy.png" />')
});
$("#rte").val(function(i, v) {
    return v.replace(';)','<img src="rte/icons/emoticon_wink.png" />')
});

最佳答案

您可以通过为所有微笑提供字典并遍历它们,使此代码的方式可扩展性更高:

var smileDict = {
  happy: ':)',
  wink:  ';)',
  sad:   ':(',
  cool:  'B)'
}

$('#rte').val(function(i, v) {
    for (var p in smileDict) {
        if (smileDict.hasOwnProperty(p)) {
            v = v.replace(smileDict[p], '<img src="rte/icons/emoticon_' + p + '.png" />');
        }
    }
    return v;
});


See example →



编辑:要对此进行更新,如注释中要求的预览区域:

var smileDict = {
  happy: ':)',
  wink:  ';)',
  sad:   ':(',
  cool:  'B)'
};

var rteVal = $('#rte').val();

for (var p in smileDict) {
    if (smileDict.hasOwnProperty(p)) {
        rteVal = rteVal.replace(smileDict[p], '<img src="rte/icons/emoticon_' + p + '.png" />');
    }
}

$('#previewcontent').html(rteVal);

10-06 08:11