jQuery的ID与空格

有没有人知道如何通过ID与jQueryselectDOM中的项目,当该ID有空间?

例如,我的项目的ID将是

<div id="content Module">Stuff</div> 

我将如何select这与jQuery?

如果我只是这样做

 $("#content Module").whatever() 

jQuery将尝试find一个既有内容ID又有Module ID的项目,这不是我正在寻找的。

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

使用属性select器。

 $("[id='content Module']").whatever(); 

或者,更好地指定标签:

 $("div[id='content Module']").whatever(); 

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

不要使用空格,原因很简单,空格字符不是有效的ID属性。

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

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

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

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

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

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

以防万一有人好奇,我发现逃离这个空间是可行的,而且可能效果最好。 当你不能控制目标DOM(即一个用户脚本)时,这是特别有用的:

 $("#this\\ has\\ spaces"); 

请注意需要的双反斜杠。

Chrisbuild议的方法可能适用于使用jQuery函数。

 var element = document.getElementById('content Module'); $(element) ... ; 

一个想法尝试:

 $("#content" + &amp;#032; + "Module").whatever() $("#content" + %20 + "Module").whatever() 

分号可能会导致javascript错误。 我也build议改变ID没有任何空格。

此外,请尝试document.getElementByID("content Module")

这对我有效。

 document.getElementById(escape('content Module')); 

虽然在HTML中有一个ID属性值的空间在技术上是无效的 ,但实际上可以使用jQuery来select它。

请参阅http://mothereffingcssescapes.com/#content%20module

 <script> // document.getElementById or similar document.getElementById('content module'); // document.querySelector or similar $('#content\\ module'); </script> 

jQuery使用一个类似于Selectors API的语法,所以你可以使用$('#content\\ module'); selectid="content module"的元素。

要定位CSS中的元素,可以像这样转义它:

 <style> #content\ module { background: hotpink; } </style> 

这可以工作,如果你想要的元素具有确切的值的ID

 $("[id='content Module']").whatever(); 

但是如果你想检查元素是否只有其中的一个(就像类一样)有或没有其他ID

 $("[id~='content']").whatever(); 

这将select元素,如果它有id="content"id="content Module"id="content Module other_ids"

我发现我的情况下逃生没有奏效,因为它用%20代替了空格。 我用replace而不是例如用页面项目的文本replace页面的h1。 如果菜单包含:

 <li id="Contact Us"\>Contact Us</li> function setTitle(menu) { $("h1").text( $("li#" + menu.replace(" ", "\\ ")).text() ); } 

我在jQuery中遇到了包含逗号和/或空格的元素ID问题,所以我做了这个,并且像一个魅力一样工作:

var ele = $(document.getElementById('last, first'));

这有空格,不起作用:

var ele = $('#last, first');

这有逗号,不起作用:

var ele = $('#last,first');