我正在尝试使用数据库中项目的GUID来标识HTML元素。
我有一个来自SQL的GUID,我将其用作HTML中标记的唯一ID。在大多数情况下,这是有效的,直到我尝试使用jQUery访问它。代码如下所示:
var thisID = '#lesson' + String(this .model.attributes.ID);
alert(thisID);
$(thisID).fadeTo('slow' , 0.5);
警报工作正常,但jQuery部分导致此错误:
Uncaught Error: Syntax error, unrecognized expression: #lesson{35E87357-1251-4C68-A1B2-8F83A4B3E0E9}
有什么奇怪的,如果我从GUID中删除括号(比如,在初始SQL调用之后),所以字符串看起来像这样:
#lesson35E87357-1251-4C68-A1B2-8F83A4B3E0E9
...然后它有效。但我宁愿不删除括号。此外,我连接字符串似乎并不重要。我有什么想法可以解决这个问题吗?
答案 0 :(得分:0)
{}
必须被转义,因为它们是元字符。您可以使用带有正则表达式的String#replace
来执行此操作:
thisID = thisID.replace(/[{}]/g, '\\$&');
要使用任何元字符(例如
!"#$%&'()*+,./:;<=>?@[\]^`{|}~
)作为名称的文字部分,必须使用两个反斜杠进行转义:\\
。例如,id="foo.bar"
元素可以使用选择器$("#foo\\.bar")
。
答案 1 :(得分:0)
Curly Braces意味着您在JavaScript中定义了一个对象。您需要使用\\
来转义它们,以便将它们与jQuery一起使用。