我正在使用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长度的某种限制?
答案 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]),连字符(“ - ”),下划线(“ _“),冒号(”:“)和句号(”。“)。