如何在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, '''); //replace single quotes
str = "<button type='button' onclick='selName("+id+",\""+name+"\")'>Select</button>";
当我用&#39;
替换单引号时,html 显示:
<button type="button" onclick="selName( 100, "O'Keefe")">Select</button>
这行得通。谢谢。
【讨论】:
以上是关于如何在jQuery变量中转义单引号的主要内容,如果未能解决你的问题,请参考以下文章