在 JavaScript 中组合单引号和双引号

Combining single and double quotes in JavaScript

我想知道 JavaScript 是否有使用 html 元素的书写格式,这些元素在 JavaScript 函数中同时包含单引号和双引号。可能是 javascript 的 heredoc 之类的东西,也可能是 jQuery 中的一个函数。 我找不到解决我的问题的方法,将尝试在下面描述它:

我正在 php 上写网页。我有一个页面,里面有一个 form。有一个 jQuery 函数可以将 select 元素附加到表单。附加后,用户选择一些选项并提交表单。 (我真的很想把整个代码贴在这里更清楚,但是有大量的代码不太好,所以我试着给你简化一下,抱歉有一些不好的代码)

我有一个像这样的 php 变量(selectonchange 事件,showUser 是一个带有 AJAX 请求的函数:

$string = <<<EOT
<select name="sapak[]" onchange='showUser(this.value, document.getElementsByName("dereje[]")[0].value)'>
EOT;

中间有很多option,当然还有关闭</select>(我没有把所有的代码都写得更短)。 jQuery 函数的一部分,将 select 附加到 form:

$(wrapper).append('<div> <? echo $string; ?> <a href="#" class="remove_field">Del</a></div>');

我的问题是,在 $string 变量中我必须使用单引号和双引号,而当涉及到 jQuery 中的 append() 函数时,我再次使用引号。所有这些都在浏览器的控制台 Uncaught SyntaxError: Unexpected identifier 中给我错误,因为单引号从 append(' 开始,但在 onchange=' 结束。有什么聪明的解决方案吗?我以为 heredoc 会是,我已经用谷歌搜索了,我认为实际上没有 javascript 的 heredoc。可能有一些其他格式可用吗?

这应该有效:

$(wrapper).append("<div> <? echo $string; ?> </div>");

$string = <<<EOT
<select name=\"sapak[]\" onchange=\"showUser(this.value, document.getElementsByName('dereje[]')[0].value)\">
EOT;

正如@Imperative 关于字符转义的建议