2014-03-19 30 views
3

我无法弄清楚如何编写这个工作。我们有一个用户可以上传文件的页面,列表将显示在屏幕上。问题出在文件名有单引号的时候。我们正在使用jQuery。有一些代码生成正在进行,但这是出来的基础知识。jQuery.html()与单引号

$(someElement).html('<label onclick="$(someOtherElement).attr(\'title\', \'TheFile\\'Name.pdf\')">Some Text</label>'); 

文件名中的单引号引起问题。我试着用一个反斜杠和两个反斜杠来转义它。使用单个反斜杠代码运行,但生成此html:

<label onclick="$(someOtherElement).attr('title', 'TheFile'Name.pdf')">Some Text</label> 

现在onclick失败。

使用2个反斜杠,jquery html()行将不会运行。在这两种情况下,我都会在不同的地方得到意外的标识符。

+0

您可能想要更正在代码'#(someElement)'中出现错字的内容。我重新格式化了您的问题,但没有更改内容。 – j08691

+1

使用更好的jQuery功能。例如,创建一个像$(“

回答

2

你需要一个反斜杠特里普尔:

$(someElement).html('<label onclick="$(someOtherElement).attr(\'title\', \'TheFile\\\'Name.pdf\')">Some Text</label>'); 

为什么3?

第一个转义的第二个反斜杠将跳过HTML代码中的'

第三个逃脱'以防止字符串关闭。

0

How to escape single quote

尝试使用字符值与&符号转义引号。

+0

谢谢。我尝试使用字符值,但它的行为就像我试图用一个单斜杠逃脱它。我仍然有相同的HTML和onclick失败。 – kombat

1

您不仅需要加倍但是反斜杠的三倍。

原因是你最初通过做\'逃过'。然而,现在您有两个字符可以转义,所以\转到\\'转到\',再次转给\\\'