如何在jQuery变量中转义单引号

Posted

技术标签:

【中文标题】如何在jQuery变量中转义单引号【英文标题】:How to escape single quote inside jQuery variable 【发布时间】:2022-01-20 19:07:48 【问题描述】:

我有一个带有以下代码的 jQuery:

id = 100;
name = "O'Keefe";
str = "<button type='button' onclick='selName( "+id+",\""+name+"\")'>Select</button>";

str 被加载到一个 div 中。

当我检查它显示的页面时:

<button type="button" onclick="selName( 100, "O" Keefe")'>Select</button>

我尝试用

转义单引号
name = name.replace(/'/g, '\'');

但它没有用。

我的代码适用于没有单引号的名称。

关于如何处理带单引号的名称有什么建议吗?

谢谢。

【问题讨论】:

html 没有任何形式的内部属性转义。因此,如果您使用 ' 作为属性值分隔符,您根本不能在属性中包含 ' 我试过了,一切都很好。你能展示一下你是如何将它加载到 div 中的吗? @Barmar 谢谢。在阅读了您关于在 HTML 中转义的评论后,我进行了搜索并找到了解决方案 - 将单引号替换为 '有效。 :) 这和 jQuery 有什么关系?您没有使用它来创建 HTML。 也可以使用反引号` 【参考方案1】:

不要为此使用字符串。既然你说你使用的是 jQuery,你应该用 jQuery 来附加事件监听器,而不是内联事件(这有很多问题,包括这个 - 繁琐的引号转义)。

const button = $('<button>Select</button>')
  .on('click', () => selName(id, name))
  .appendTo('selectorOfWhateverYouWantToAppendThisTo');

【讨论】:

感谢您的回答。我了解您在做什么,但这需要对我的代码进行重大更改。我会在以后的代码中记住这一点。我最终用 ' 替换了单引号。有效。谢谢。【参考方案2】:

我找到了解决办法。

id = 100;
name = "O'Keefe";
name = name.replace(/'/g, '&#39;'); //replace single quotes
str = "<button type='button' onclick='selName("+id+",\""+name+"\")'>Select</button>";

当我用&amp;#39; 替换单引号时,html 显示:

<button type="button" onclick="selName( 100, "O'Keefe")">Select</button>

这行得通。谢谢。

【讨论】:

以上是关于如何在jQuery变量中转义单引号的主要内容,如果未能解决你的问题,请参考以下文章

在 R 变量中转义单引号

如何在 MySQL 中转义单引号

如何在单引号字符串中转义单引号

如何在 Presto 中转义单引号?

如何在 Sybase 中转义单引号

如何在 CSS 中转义单引号或双引号?