4

我有以下代码将活动类添加到选定的 div:

$("div #"+ myID).addClass( "active" );

这仅在 myID 是一个单词时有效,当 myID 中有空格时,代码损坏,我试图用引号将 myID 包装起来,但不起作用。

很多内容都有空格,因为我不是内容所有者,无法控制更正内容,我只能修改我的代码以处理内容。有没有办法用空格指向 div id?谢谢你。

问题解决了。谢谢你们 :-)

4

2 回答 2

8

元素 ID 不应包含空格。

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

来自 HTML规范


如果元素 ID 超出您的控制范围,\\请在选择器中转义空格:

<div id="target element"></div>

$('#target\\ element').doSomething(); // escape invalid chars with \\

在您的情况下,您必须将 myID 中的空格替换为'\\ '

于 2012-04-19T16:44:22.713 回答
1
$("div #"+ myID).addClass( "active" );

只是上面的代码无效的

HTML5 全局id属性:

id 属性id为 HTML 元素指定一个唯一性(该值在 HTML 文档中必须是唯一的)。
id 属性最常用于指向样式表中的样式,并由 JavaScript(通过 HTML DOM)以特定的id.

  • 必须以字母 AZ 或 az 开头
  • 后面可以跟:字母 (A-Za-z)、数字 (0-9)、连字符 ("-") 和下划线 ("_")
  • 在 HTML 中,所有值都不区分大小写。
  • 必须至少包含一个字符(不能为空),并且不能包含任何空格字符

示例:在 HTML5中,下面的 id是有效的。

<p id="#">Foo.</p>
<p id="##">Bar.</p>
<p id="♥">Baz.</p>
<p id="©">Inga.</p>
<p id="{}">Lorem.</p>
<p id="“‘’”">Ipsum.</p>
<p id="⌘⌥">Dolor.</p>
<p id="{}">Sit.</p>
<p id="[attr=value]">Amet.</p>
<p id="++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.">Hello world!</p>

在 jQuery 中: jQuery 确实处理任何有效的ID名称。我们只需要转义元字符(点、分号、方括号...等)。(就像java脚本有引号问题)。

在 jQuery 中使用id有以下限制。

// Does not work
 $("#some:id")

 // Works!
 $("#some\\:id")

 // Does not work
 $("#some.id")

 // Works!
 $("#some\\.id")

请参阅此处的参考

于 2012-04-19T17:40:04.587 回答