为什么jQuery选择器返回null ?

Why would the jQuery selector return null?

本文关键字:null 返回 选择器 jQuery 为什么      更新时间:2023-09-26

我正在为使用所见即所得构建的页面编写javascript。不,我现在不能去改变id或真正调整DOM。

这是我试图选择的DOM元素(这是由所见即所得创建的)。

<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上运行。

我从来没见过这样的事。

谢谢大家。

EDIT:没有分号,它也不会拾取它。由于所见即所得,分号实际上位于元素的ID属性中。

您可以像这样转义分号:

$("#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/

还有一个关于id属性有多通用的相关链接。

由于不能编辑带有分号的ID,请尝试在选择器中对其进行转义,如下所示:

$("#vW2070'';")

这里的转义只不过是在分号前加上"' '"。

这里有一些更深入的见解:在HTML中,id属性的有效值是什么?

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

$("#vW2070")

尝试删除分号$("#vW2070;")$("#vW2070")

您没有收到错误信息吗?在chrome中,你应该得到Uncaught Error: Syntax error, unrecognized expression: ;

如果元素的id中确实有分号,那么在技术上是无效的。

Edit: HTML5规范似乎不排除除空格以外的任何字符。

可以用双反斜杠#vW2070'';

分隔分号

否则,只需从选择器代码中去掉分号

你应该尝试用"'"转义";"

change $("#vW2070;") to $("#vW2070'';")

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

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