Zend框架表单和jQuery选择器 - 如何选择... ID?

时间:2009-11-25 11:55:49

标签: jquery zend-framework css-selectors zend-form

所以我在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解决方案......?

1 个答案:

答案 0 :(得分:3)

尝试转义方括号:

$("#contactDetails\\[email\\]");

jQuery期望那些包含属性过滤器表达式。向下滚动到此链接的末尾:

http://docs.jquery.com/Selectors

从上面开始:

  

需要的完整字符列表   被转义:#;&,。+ *〜':“!^ $ => | /