带空格的jquery ID

Jef*_*vis 122 jquery

当有ID空间时,有没有人知道如何使用jQuery通过ID选择DOM中的项目?

例如,我的项目的ID将是

<div id="content Module">Stuff</div>
Run Code Online (Sandbox Code Playgroud)

我如何用jQuery选择它?

如果我这样做

$("#content Module").whatever() 
Run Code Online (Sandbox Code Playgroud)

jQuery将尝试查找包含内容ID和Module ID的项目,这不是我想要的.

我应该补充一点,我正在使用一个旧代码库,其中广泛使用这两个单词ID,因此通过并更改所有ID将是不好的.

Ell*_*son 241

使用属性选择器.

$("[id='content Module']").whatever();
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,也指定标签:

$("div[id='content Module']").whatever();
Run Code Online (Sandbox Code Playgroud)

请注意,与$('#id')不同,如果您的页面中有多个具有相同ID的元素,则会返回多个元素.

  • 这帮了我很多.我正在通过ajax读取一些可怕的HTML,并且无法控制HTML的结构或ID的格式.他们的身份证上有空格,所以艾略特的回答非常有帮助,而格拉维奇则没有任何帮助. (8认同)

Gla*_*vić 62

不要使用空格,原因很简单,空格字符对ID属性无效.

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

但如果你不关心标准尝试 $("[id='content Module']")

类似的线程> HTML中id属性的有效值是什么?

编辑:HTML 4.01和HTML5之间的ID有何不同

HTML5摆脱了对id属性的额外限制.剩下的唯一要求 - 除了在文档中是唯一的 - 是值必须包含至少一个字符(不能为空),并且它不能包含任何空格字符.

链接:http://mathiasbynens.be/notes/html5-id-class

  • +1.遵循命名标准,然后您不必为不遵循它们时提供变通方法. (4认同)
  • 不要因为"标准"而告诉该人通过并破解旧项目的整个代码库.最多,这应评价评论,当然不是接受的答案:( (2认同)

Mor*_*gon 20

万一有人好奇,我发现逃离空间会起作用,也许效果最好.当您无法控制目标DOM(即用户脚本)时,这尤其有用:

$("#this\\ has\\ spaces");
Run Code Online (Sandbox Code Playgroud)

请注意双反斜杠,这是必需的.

  • 如果另一种语言本身是另一种语言中的字符串常量,则最多 8 个反斜杠 :) (2认同)
  • 当字符串被递归转义时,这会导致堆栈溢出 (2认同)

cee*_*yoz 7

Chris建议的方法可能适用于jQuery函数.

var element = document.getElementById('content Module');
$(element) ... ;
Run Code Online (Sandbox Code Playgroud)