0

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

...然后它的工作原理。但我宁愿不删除括号。此外,我在哪里连接字符串似乎无关紧要。有什么想法可以解决这个问题吗?

4

2 回答 2

0

{}由于它们是元字符,因此必须对其进行转义。您可以通过使用String#replace正则表达式来做到这一点:

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

文档中:

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

于 2013-06-21T21:19:41.473 回答
0

花括号意味着您在 JavaScript 中定义一个对象。您需要转义它们\\才能将它们与 jQuery 一起使用。

于 2013-06-21T21:20:58.790 回答