【问题标题】:How to escape single quote inside jQuery variable如何在jQuery变量中转义单引号
【发布时间】: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。
  • 也可以使用反引号`

标签: jquery escaping


【解决方案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>

这行得通。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多