所以我在Zend Framework生成的表单中遇到了这个问题。
我们知道Zend正在使用这种格式的HTML元素ID,即:contactDetails[name]
,contactDetails[email]
等。
首先,为什么Zend使用无效的 HTML来生成表单?根据{{3}}:
,在ID中不应有[]
括号{。}}
ID和NAME令牌必须以a开头 信([A-Za-z]),可以遵循 任意数量的字母,数字 ([0-9]),连字符(“ - ”),下划线 (“_”),冒号(“:”)和句号 ( “”)。
但我真正的问题是如何通过id使用jQuery正确选择元素,如果我们必须处理无效的,Zend生成的ids ?
在标准JavaScript中,这似乎有效:document.getElementById('contactDetails[email]')
。
但是在jQuery中:$('#contactDetails[email]')
- 这显然是错误的,因为括号是为属性选择器保留的。
我发现的简单解决方法是在$()函数中包装native-js-selected对象:
$(document.getElementById('contactDetails[email]'))
。使用这个方法我可以在这个对象上使用所有jQuery函数,但这似乎是一个hacky解决方案......?
答案 0 :(得分:3)
尝试转义方括号:
$("#contactDetails\\[email\\]");
jQuery期望那些包含属性过滤器表达式。向下滚动到此链接的末尾:
http://docs.jquery.com/Selectors
从上面开始:
需要的完整字符列表 被转义:#;&,。+ *〜':“!^ $ => | /