JavaScript中如何转义单引号

5
我编写了一个函数,如下所示:

function makeTitleEditable($titleContainer){
        var defaultValue = $titleContainer.text().replace("'","\\'");
        $titleContainer.replaceWith("<input id='poll_title' name='poll[title]' value='" + defaultValue +"' type='text'>");
      }

现在的问题是我仍然无法避免单引号。例如,如果

$titleContainer.text() => I'm lucky

console.log("<input id='poll_title' name='poll[title]' value='" + defaultValue +"' type='text'>") => <input id='poll_title' name='poll[title]' value='I\'m lucky!' type='text'> 

如何解决生成值为"I"而不是"I'm lucky"的DOM的问题?

为什么你不使用双引号来定义属性? - TimWolla
2个回答

5

当然,快速解决方案是将"'"替换为"\'",但这在复制和粘贴的基础上并不具有可伸缩性。
更好的方式是使用正则表达式,例如:

var badString = "Visit John's Site!!!";
var goodString = badString.replace(/'/g, "\'");

请记住,这些字符在服务器端或后续函数调用中仍然会显示为简单的撇号,因此,如果您计划在不同函数之间传递它们,可能需要另一种解决方案:

var badString = "Visit John's Site!!!";
var goodString = badString.replace(/'/g, "\x27");

这是撇号的标准Unicode字符。这并不一定能避免任何后续函数调用出现问题,但它意味着字符串不必进行解码。


2
使用jQuery设置值;
function makeTitleEditable($titleContainer){
    $titleContainer.replaceWith(
       $("<input id='poll_title' name='poll[title]' type='text'>").val($titleContainer.text())
    );
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接