javascript:string.replace不';行不通

javascript:string.replace不';行不通,javascript,jquery,string,replace,Javascript,Jquery,String,Replace,我在替换javascript/jquery中的字符串时遇到了一个小问题。首先,代码: HTML: 带有“contactPersons.append(contactPersonsTpl.replace(“%email%”,contactPerson));的部分替换根本不起作用。我尝试了各种类型的调试(日志、更改substr等)。没有机会 但是如果我写“$('#cm_contactPersons').html()。替换(“%email%”,”test@blubb.at“);”在Firefox控制台中

我在替换javascript/jquery中的字符串时遇到了一个小问题。首先,代码:

HTML:

带有“
contactPersons.append(contactPersonsTpl.replace(“%email%”,contactPerson));
的部分替换根本不起作用。我尝试了各种类型的调试(日志、更改substr等)。没有机会

但是如果我写“
$('#cm_contactPersons').html()。替换(“%email%”,”test@blubb.at“);
”在Firefox控制台中,它可以正常工作

我做错了什么?

使用正则表达式

默认情况下,“替换”将仅更改第一次出现的图案。要替换字符串中的所有模式,您需要使用带有g修饰符的正则表达式

contactPersons.append(contactPersonsTpl.replace(/%email%/g, contactPerson));

变量
contactPersonsTpl
是字符串,而不是jquery对象。因此,您不能将
.append()
与它一起使用。您应该使用jquery对象来使用
.append()
。大概是这样的:

var contactPersonsTpl = $('#cm_contactPersons');
contactPersonsTpl.append(contactPersonsTpl.html().replace('%email%', contactPerson));

“如果我在Firefox控制台中写入[…],它会工作。”因此
string.replace
确实工作,那么?@ChrisMartin是的,但只在Firefox中工作console@zamnuts是的,你是对的,
contactPersonsspl.html()
的结果是一个字符串,所以结果是一样的。至少第一次,在那之后,它将包括在以前的迭代(和以前的事件)中追加的内容。问题不在于追加(这很好)。问题是替换。是的,谢谢,它可以工作:)但是为什么它不能与substr一起工作呢?为什么它能在firefox控制台中工作?
contactPersons.append(contactPersonsTpl.replace(/%email%/g, contactPerson));
var contactPersonsTpl = $('#cm_contactPersons');
contactPersonsTpl.append(contactPersonsTpl.html().replace('%email%', contactPerson));