【问题标题】:jQuery matching ID with a ' = ' in itjQuery匹配ID与'='
【发布时间】:2009-11-25 05:35:33
【问题描述】:

有没有人尝试过匹配一个带有等号 (=) 的 id,并且成功了?例如:

// DOM structure
/*DOC += <span id='Test=Test' class='something'></span> */
var test = $('#Test=Test');

我尝试了上面的代码。 jQuery 不喜欢它并返回 undefined。但是,如果我匹配跨度的类,我实际上可以找到跨度(并随后查询 id 的值)。

如果我必须将 id 与 '=' 匹配,有什么方法可以做到吗?

谢谢。

【问题讨论】:

  • 尝试逃避它? ("#Test\\=Test");

标签: javascript jquery unit-testing


【解决方案1】:

好吧,首先我想注意的是,等号对于ID attribute来说不是一个有效的字符,它仍然可以使用,但是在不同的浏览器之间你可能会出现意外的行为。

ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 (" _")、冒号 (":") 和句点 (".")。

关于 jQuery,选择器上的 = 字符必须用双反斜杠转义:

$('#Test\\=Test');

更多信息:

需要转义的完整字符列表:#;&amp;,.+*~':"!^$[]()=&gt;|/

【讨论】:

  • 如你所说,等号在ID属性中是无效的,那你为什么说它还能用呢?
  • 因为你可以。但不应该。您可以自行承担使用它的风险。
  • 如果您使用带有等号的 ID,您的文档将不是有效的 HTML,这意味着关于用户代理是否会呈现它的所有赌注都将落空。即使是这样(就像所有主要浏览器一样),所有与 ID 相关的行为(例如 CSS 选择器、document.getElementById、URL 哈希)都会有未定义的行为(我敢打赌,浏览器行为会有所不同)。为什么还要考虑冒险呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
相关资源
最近更新 更多