为什么jQuery选择器会返回null?

时间:2011-12-22 14:28:03

标签: javascript jquery

我正在为使用WYSIWYG构建的页面编写javascript。不,我目前无法进入并更改ID或真正调整DOM。

这是我想要选择的DOM元素(这是由WYSIWYG创建的)。

<td nowrap="true" align="left" id="vW2070;" name="vW2070;" style="padding-left: 2pt; padding-right: 2pt; border-left: 1pt solid black; cursor: auto; background-color: rgb(164, 194, 64); color: rgb(0, 0, 0);" class=" nAll selected" selected="1" sn="itemList">TOP 5</td>

目前在我的javascript中,我想要的ID是#vW2070;。出于某种原因,document.getElementById("vW2070;")完全返回,但$("#vW2070;")返回null。为什么是这样?我需要使用jQuery选择器。

相关功能在$(document).ready上运行。

我从未见过这样的事情。

谢谢大家。

编辑:如果没有分号,它也不会捡起它。由于WYSIWYG,分号字面意思在元素的ID属性中。

7 个答案:

答案 0 :(得分:7)

你可以像这样转义分号:

$("#vW2070\\;") //Use one backslash to escape the semicolon for the Sizzle parser and the other to escape the first backslash for the javascript parser, so two in total

$(document.getElementById("#vW2070;")).jquerystuff(...);

JSFiddle:http://jsfiddle.net/HTyQC/

另外,a relevant link关于id属性的多样性。

答案 1 :(得分:3)

由于您无法编辑带有分号的ID,请尝试在选择器中转义它,如下所示:

$("#vW2070\\;")

在这里转义只不过是在分号前添加“\ \”。

以下是更多见解:What are valid values for the id attribute in HTML?

答案 2 :(得分:1)

尝试删除;你不应该需要它

$("#vW2070")

答案 3 :(得分:1)

尝试将分号$("#vW2070;")移至$("#vW2070")

您是否收到错误消息?在Chrome中,您应该获得Uncaught Error: Syntax error, unrecognized expression: ;

答案 4 :(得分:1)

您应该尝试使用";"

转义"\"

$("#vW2070;")更改为$("#vW2070\\;")

小提琴:http://jsfiddle.net/28cZu/

答案 5 :(得分:1)

如果你的元素id中确实有一个分号,那么 technically its invalid

修改 HTML5 spec似乎不会排除空格以外的任何字符。

您可以使用双反斜杠#vW2070\\;

来区分分号

否则,只需从选择器代码中删除分号。

答案 6 :(得分:0)

这是jquery bug或者我们可以说当前jquery版本的限制。它不会允许';'在ID。