我在JavaScript中错误地转义字符串了吗?

时间:2012-01-17 22:26:37

标签: javascript jquery escaping syntax-error

我正在尝试在javascript中创建一个可点击的链接

var content = '<a href=\"#\" onclick=\"displayContent(\"TEST\")\">Whatever</a>';

$("#placeHolder").html(content);

但我一直收到错误

  

未捕获的SyntaxError:意外的令牌}

这不是逃避双引号和创建链接的正确方法吗?

4 个答案:

答案 0 :(得分:7)

您只需要转义单引号

var content = '<a href="#" onclick="displayContent(\'TEST\')">Whatever</a>'

正如博兹多兹所说:

  

您转义单引号内的单引号;你转义双引号内的双引号


但为什么不这样做

var content = $("<a />").attr("href", "#").text("Whatever").click(function(){
     displayContent('TEST')
});

或正如内森所说:

var content = $('<a href="#">Whatever</a>').click(
     function() { displayContent('TEST') 
});

答案 1 :(得分:2)

你可以通过创建这样的元素来避免这种混乱:

var content = $( "<a>", {
    href: "#",
    text: "whatever",
    click: $.proxy( displayContent, 0, "TEST" )
});

答案 2 :(得分:1)

您只需要在引号和结束引号使用的类型相同时转义引号。在您的示例中,您不必要地转义双引号,因为您的字符串用单引号括起来。话虽如此,由于onclick语句中的双引号,解析器在调用displayContent()时会出现问题。

试试这个,而不是:

var content = '<a href="#" onclick="displayContent(\'TEST\')">Whatever</a>'; 

答案 3 :(得分:0)

你根本不需要逃避它们!

var content = '<a href="#" onclick="displayContent(\'TEST\')">Whatever</a>'; 

$("#placeHolder").html(content); 

就这样,因为当你嵌入"时,你通常不需要逃避';

但是当它是函数中的参数时,你需要转义'个字符。