jQuery的.html()如何与JavaScript字符串一起使用?

时间:2018-11-05 17:10:40

标签: jquery html ejs

我有明确的应用程序,并且EJS作为视图引擎。 我试图以2种不同的方式将html设置为div:

const attachmentFileNames = '<%= eco.attachmentFileName %>';
if (attachmentFileNames) {
    $("#attachmentFileNameList").html(attachmentFileNames.replace(',', '<br/>'));
}

const attachmentFileNames = "<%= eco.attachmentFileName ? eco.attachmentFileName.replace(',', '<br/>') : '' %>";
if (attachmentFileNames) {
    $("#attachmentFileNameList").html(attachmentFileNames);
}

问题是,代码的第一个安全性正在按预期工作('
'被视为行终止符),但是第二个代码只是将所有数据设置为文本('
'显示为字符串)。

有人可以解释吗?

1 个答案:

答案 0 :(得分:1)

这不是jQuery的html函数,而是EJS,它会自动转义<%= ... %>表达式产生的文本。

在第二个示例中,如果您在调试器中查看attachmentFileNames的值,可能会看到&lt;br/>(或&lt;br/&gt;)而不是<br/>。当您将"&lt;br/>"(或"&lt;br/&gt;")用作HTML时,结果是字符<br/和{ {1}}:

>
const attachmentFileNames1 = 'one,two';
if (attachmentFileNames1) {
    $("#attachmentFileNameList1").html(attachmentFileNames1.replace(',', '<br/>'));
}

const attachmentFileNames2 = 'one&lt;br/>two';
if (attachmentFileNames2) {
    $("#attachmentFileNameList2").html(attachmentFileNames2);
}