0

我有一个复杂的 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")返回了预期的结果。

所以,我唯一的想法是任何“可疑”字符都需要转义,但文档没有提到下划线或百分比作为“可疑”。那么,我的错在哪里?

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

4

7 回答 7

2

正如 Matthew 所说,ID 属性上不允许使用特殊字符。这不是 jQuery 问题。这是完整的参考。

于 2009-11-11T21:44:38.470 回答
1

此页面底部的特殊字符列表似乎不完整。尝试逃避你的百分号:

$("#FormView1_CopaBOM973row\\%18\\%_dkF")
于 2009-11-11T16:25:20.733 回答
0

试试 $("#FormView1_CopaBOM973row%18%_dkF")[0].id;

于 2009-11-11T16:20:54.220 回答
0

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

于 2009-11-11T16:24:16.943 回答
0

逃避百分号似乎有效。

$("#FormView1_CopaBOM973row\\%18\\%_dkF")
于 2009-11-11T16:24:38.317 回答
0

这些百分比%在 CSS 选择器中显然是非法的(显然是因为我在w3 规范中找不到它们,或者它一定是一个未公开的 jQuery 错误),但在 HTML 属性中却不是。逃避他们虽然工作:

$("#FormView1_CopaBOM973row\\%18\\%_dkF").width();
于 2009-11-11T16:25:48.423 回答
0

我认为这是因为您的 ID 中有特殊字符。

尝试:

$("[id=FormView1_CopaBOM973row%18%_dkF]").width();
于 2009-11-11T16:31:36.160 回答