用jQuery改进val替换

用jQuery改进val替换,jquery,replace,Jquery,Replace,这是一种改进这种臭名昭著的语法的方法吗。。。(使用阵列) $(“#rte”).val(函数(i,v){ 返回v.replace(':)',“”) }); $(“#rte”).val(函数(i,v){ 返回v.替换(“;)”,“”) }); $(“#rte”).val(函数(i,v){ 返回v .替换(“:)”,“”) // ... .替换(;),”; }); 你可以为你所有的微笑提供一个字典,并在其中循环,从而使这段代码更具可扩展性: var smileDict = { happy: ':)

这是一种改进这种臭名昭著的语法的方法吗。。。(使用阵列)

$(“#rte”).val(函数(i,v){
返回v.replace(':)',“”)
});
$(“#rte”).val(函数(i,v){
返回v.替换(“;)”,“”)
});
$(“#rte”).val(函数(i,v){
返回v
.替换(“:)”,“”)
// ...
.替换(;),”;
});

你可以为你所有的微笑提供一个字典,并在其中循环,从而使这段代码更具可扩展性:

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;
});
var smileDict={
快乐:“:)”,
眨眼:“;)”,
悲伤:':(',
酷:“B”
}
$('#rte').val(函数(i,v){
用于(smileDict中的var p){
if(smileDict.hasOwnProperty(p)){
v=v.替换(smileDict[p],'';
}
}
返回v;
});


编辑:要使此更新具有评论中要求的预览区域,请执行以下操作:

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);
var smileDict={
快乐:“:)”,
眨眼:“;)”,
悲伤:':(',
酷:“B”
};
var rteVal=$('#rte').val();
用于(smileDict中的var p){
if(smileDict.hasOwnProperty(p)){
rteVal=rteVal.replace(smileDict[p],“”);
}
}
$('#previewcontent').html(rteVal);

+1,mVchr。哇!这个解决方案比我想象的更优雅。谢谢“投票需要15个声望(点击此框即为辞退),”如何?。。。很抱歉问候。如果他最终合并了20个笑脸,那么实际上更容易维护的代码就更少了。@Jakub Hampl-但你应该关注代码的快乐程度:)再次感谢你。补充质询,我不想强调。。。如果我想创建一个预览区域(比如“预览”id),如何只替换预览区域中的图像而不替换文本区域中的图像?VincentStore将
$('#rte').val()
存储到变量。更改(smileDict中的var p)的
等,以影响该变量,而不是
v
。然后将该变量插入
preview.html(变量)
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;
});
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);