jQuery GUID为字符串和“语法错误,无法识别的表达式”

时间:2013-06-21 21:17:11

标签: jquery

我正在尝试使用数据库中项目的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

...然后它有效。但我宁愿不删除括号。此外,我连接字符串似乎并不重要。我有什么想法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

{}必须被转义,因为它们是元字符。您可以使用带有正则表达式的String#replace来执行此操作:

thisID = thisID.replace(/[{}]/g, '\\$&');

来自documentation

  

要使用任何元字符(例如!"#$%&'()*+,./:;<=>?@[\]^`{|}~)作为名称的文字部分,必须使用两个反斜杠进行转义:\\。例如,id="foo.bar"元素可以使用选择器$("#foo\\.bar")

答案 1 :(得分:0)

Curly Braces意味着您在JavaScript中定义了一个对象。您需要使用\\来转义它们,以便将它们与jQuery一起使用。