我有这一行在jquery中添加:
$('#league2').append("<input type=\"button\" id=\"2btn\" value=\"1.2\" class=\"butta\" onmousedown=\"active('exam\'ple','awayteam')");
注意“考试”......我逃过了'带' 所以当点击按钮时,激活的功能应该有效。
这是激活的功能:
function active(hometeam,awayteam){
alert("if this is alerted, it works!");
}
当我点击按钮时,它应警告“如果这是警报,它可以工作!”,但它没有警告它。并且它认为,因为当我使用该功能时,这就是outpot:
function active(exam\'ple,awayteam){
当我用不包含“'”的单词附加相同的内容时,它正在工作。
答案 0 :(得分:2)
您需要在活动函数的参数中转义反斜杠,而不是撇号。
$('#league2').append("<input type=\"button\" id=\"2btn\" value=\"1.2\" class=\"butta\" onmousedown=\"active('exam\\'ple','awayteam')");
要转义字符串以使用php将其附加到该代码,您可以使用正则表达式。以下内容适用于您的情况。
// Replaces a backslash with four backslashes: The 'append' function will interpret it as two backslashes; the 'active' function, as only one.
$str = preg_replace("/\\\\/", "\\\\\\\\\\\\\\\\", $str);
// Replaces an apostrophe with two backslashes and an apostrophe, then javascript will append only one backslash and an apostrophe, escaping that way an apostrophe.
$str = preg_replace("/'/", "\\\\\\\\'", $str);
// Replaces quotations with a backslash and quotations: the quotations will be escaped inside the append function, so one quotations will be printed out on your HTML
$str = preg_replace("/\"/", "\\\\\"", $str);
如果你不知道正则表达式(正则表达式)是什么,我建议你研究一下如何使用它们。他们会帮助你很多。
编辑:由于某种原因,最后一个程序需要双倍的反斜杠才能工作。更新。
答案 1 :(得分:1)
当字符串是双引号时,您不需要转义单引号。最好将整个字符串用单引号括起来,这样就可以使用双引号而无需转义。 (或用单引号括起来的双打)。
例如:
$("#thing").append('<div id="foo" class="bar" style="color:black;" onclick="foobar()"></div>');
你的代码有点复杂,因为有多个级别(你考虑过jQuery's click?):
$('#league2').append('<input type="button" id="2btn" value="1.2" class="butta" onmousedown="active('exam\'ple','awayteam')');