如何在jQuery中转义单引号

How to escape a single quote in jQuery?

本文关键字:转义 单引号 jQuery      更新时间:2023-09-26

我知道我可以使用''',但这不是这里的重点。假设我有"不能"这个词。它现在有"'"。这进入函数中的变量,如下所示:

function active(id,clas,match,hometeam,awayteam){

所以假设主队有"不能"的价值。当我尝试使用此代码时:

$('#test').html(hometeam + " VS " + awayteam);

它不起作用,因为本质上它具有:

$('#test').html(can't + " VS " + awayteam);

我该如何解决这个问题?

编辑:

我认为问题不在于jQuery。调用此函数的行是以下行:

<input type="button" id="btn" value="1.4" class="butta" onmousedown="active('btn','buttdowna','match1','hometeam','awayteam')" />

那么我该如何逃脱呢?

编辑:我还没有找到完美的解决方案,所以我只是更改了数据库中的单词并暂时添加了"''"...

这应该有效。如果内容有双引号,则将字符串括在单引号中,并在其中转义单引号。

var hometeam = '"can''t"';
$('#test').html(hometeam + 'VS' + awayteam)

变量返回的值不需要在javascript中转义。如果您遇到问题,则还有其他一些潜在问题。

编辑

:根据您的问题编辑,您将需要转义函数调用中的值,如果您要使用 can't 作为参数之一,则需要

<input type="button" id="btn" value="1.4" class="butta" onmousedown="active('btn','buttdowna','can''t','hometeam','awayteam')" />

问题是你正在使用字符串操作来构建 HTML。改用jQuery/DOM方法,你不会有问题。

另一种方法是转义引号,但与之前的建议相比,这真的很丑陋。


由于您正在用 PHP 创建 HTML,请执行如下操作:

echo '<input type="button" id="btn" value="1.4" class="butta" onmousedown=''active("btn","buttdowna","match1",'.htmlspecialchars(json_encode($foo)).', '.htmlspecialchars(json_encode($bar)).');'' />';

您可以像这样更改 HTML 部分,它将起作用,

<input type="button" id="btn" value="1.4" class="butta" onmousedown=active("btn","buttdowna","match1","can't","awayteam") />

在没有引号的 HTML 属性中也可以工作。报价用于分组。示例)标题="点击事件"将起作用,标题=点击事件将仅采用第一个值(点击)。也就是说,如果一个单词不包含空格,则不需要引用。