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" + &#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');