Jquery选择器长度限制?

时间:2009-07-20 16:22:30

标签: jquery asp.net-mvc

我正在使用ASP.Net MVC,它为对象树的文本框创建了一个id,如下所示:

<input id="evt_SessionLinks[0]_Sessions[0]_TimeTables[0]_TimeWindows[0]_Finish" name="evt.SessionLinks[0].Sessions[0].TimeTables[0].TimeWindows[0].Finish" type="text" value="" class="clockPick"/>

我正在尝试使用以下Jquery选择器选择此字段:

var e = $("#evt_SessionLinks[0]_Sessions[0]_TimeTables[0]_TimeWindows[0]_Finish");

如果我运行我的代码,请放置一个断点并检查e变量是否显示为length为0。

如果我将ID和选择器更改为id='Finish' / '#Finish'。然后length = 1。

我想我正在尝试正确选择元素?是否存在选择器可以找到的id长度的某种限制?

3 个答案:

答案 0 :(得分:2)

选择器的“[...]”部分被解释为对元素属性的测试。这会将查询转换为无法正常工作的内容。

如果您的代码中确实有方括号,则需要删除它们才能使用它。像“Area01_Section02_Line03”这样的ID并不罕见。

答案 1 :(得分:1)

我认为问题是方括号,而不是选择器的长度。尝试使用“\”转义方括号。

更新:根据this blog post,你需要两个“而不是一个”。我的推论是,当JQuery解释它时,仍然需要有一个“\”,并且反斜杠会被JavaScript解析器弄平。

var e = $("#evt_SessionLinks\\[0\\]_Sessions\\[0\\]_TimeTables\\[0\\]_TimeWindows\\[0\\]_Finish");

答案 2 :(得分:1)

也许是因为它是无效的ID?

来自w3c spec

  

ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“ _“),冒号(”:“)和句号(”。“)。