为什么jQuery 1.3.2没有通过ID找到现有的控件 - 我做错了什么?

时间:2009-11-11 16:18:12

标签: jquery getelementbyid

我有一个复杂的html-Form,我正在使用jQ进行一些工作。并且花了今天下午的最佳时间试图理解我能够追溯到jQuery无法找到现有控件的问题。 命令$("#FormView1_CopaBOM973row%18%_dkF").width();返回null。 首先我考虑了width()中的错误 - 实现并尝试$("#FormView1_CopaBOM973row%18%_dkF").attr("id"); - 它没有返回任何内容,其长度为0。

我在Firefox 3.5.5中这样做,使用了Firebug的DOM-Explorer来验证那里的东西。最后,最终的测试工作:$(document.getElementById("FormView1_CopaBOM973row%18%_dkF")).attr("id")返回了预期的结果。

所以,我唯一的想法是任何“可疑”角色都需要逃避,但是文档没有提到下划线或百分比是“可疑的”。那么,哪里是我的错?

请等一下。不要求更多的“代码”,我认为这个问题不再需要......

7 个答案:

答案 0 :(得分:2)

正如Matthew所说,ID属性上不允许使用特殊字符。这不是一个jQuery问题。 Here is the complete reference.

答案 1 :(得分:1)

this page底部的特殊字符列表似乎不完整。尝试逃避百分号:

$("#FormView1_CopaBOM973row\\%18\\%_dkF")

答案 2 :(得分:0)

尝试$(“#FormView1_CopaBOM973row%18%_dkF”)[0] .id;

答案 3 :(得分:0)

'%'不是id属性的有效字符,所以jQuery可能不喜欢它。

答案 4 :(得分:0)

逃避百分号似乎有效。

$("#FormView1_CopaBOM973row\\%18\\%_dkF")

答案 5 :(得分:0)

那些百分比%在CSS选择器中显然是非法的(显然因为我无法在w3 spec中找到它们,或者它必须是未公开的jQuery错误),但是不在HTML中。逃避它们可以完成这项工作:

$("#FormView1_CopaBOM973row\\%18\\%_dkF").width();

答案 6 :(得分:0)

我认为这是因为你身份证中有特殊字符。

尝试:

$("[id=FormView1_CopaBOM973row%18%_dkF]").width();