2

我在 jquery 中附加了这一行:

$('#league2').append("<input type=\"button\" id=\"2btn\" value=\"1.2\" class=\"butta\"  onmousedown=\"active('exam\'ple','awayteam')");

注意“exam\'ple”......我用\'转义了',所以当点击按钮时,激活的功能应该可以工作。

这是激活的功能:

function active(hometeam,awayteam){
alert("if this is alerted, it works!");
}

当我单击按钮时,它应该提醒“如果这被提醒,它可以工作!”,但它没有提醒它。它认为是因为当我使用该功能时,这是outpot:

function active(exam\'ple,awayteam){

当我用不包含“'”的单词附加相同的内容时,它正在工作。

4

2 回答 2

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);

如果您不知道什么是正则表达式 (regex),我建议您研究一下如何使用它们。他们会帮助你很多。

编辑:由于某种原因,最后一个程序需要双反斜杠才能工作。更新。

于 2012-07-07T18:59:27.057 回答
1

当字符串是双引号时,您不需要转义单引号。最好将整个字符串用单引号括起来,这样您就可以使用双引号而无需转义。(或单引号全部用双引号括起来)。

例如:

$("#thing").append('<div id="foo" class="bar" style="color:black;" onclick="foobar()"></div>');

您的代码有点复杂,因为有多个级别(您是否考虑过jQuery 的点击?):

$('#league2').append('<input type="button" id="2btn" value="1.2" class="butta"  onmousedown="active('exam\'ple','awayteam')');
于 2012-07-07T18:59:25.090 回答