Я неправильно экранирую строки в JavaScript? - PullRequest
6 голосов
/ 18 января 2012

Я пытаюсь создать кликабельную ссылку в javascript

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

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

но я получаю сообщение об ошибке

Uncaught SyntaxError: Неожиданный токен}

Разве это не правильный способ избежать двойных кавычек и создать ссылку?

Ответы [ 4 ]

7 голосов
/ 18 января 2012

Вам нужно только избежать одинарных кавычек

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') 
});
2 голосов
/ 18 января 2012

Вы можете избежать этого беспорядка, создав такие элементы:

var content = $( "<a>", {
    href: "#",
    text: "whatever",
    click: $.proxy( displayContent, 0, "TEST" )
});
1 голос
/ 18 января 2012

Вы должны избегать кавычек только тогда, когда они имеют тот же тип, который используется при открытии и закрытии кавычек.В вашем примере вы излишне избегаете двойных кавычек, потому что ваша строка заключена в одинарные кавычки.При этом из-за двойных кавычек в операторе onclick у парсера возникнут проблемы с вызовом displayContent().

Попробуйте вместо этого:

var content = '<a href="#" onclick="displayContent(\'TEST\')">Whatever</a>'; 
0 голосов
/ 18 января 2012

Вам не нужно вообще избегать их!

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

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

Просто сделайте это так, как обычно вам не нужно бежать ", когда вводится в ';

Но вам нужно экранировать ' символов, когда это параметр в функции.

...