2009-11-25 56 views
1

所以我用Zend Framework生成的表單來解決這個問題。Zend框架表單和jQuery選擇器 - 如何選擇... ID?

正如我們所知道的Zend使用這種格式的HTML元素的ID,即:contactDetails[name]contactDetails[email]

首先,爲什麼Zend公司使用無效 HTML生成表格?應該不存在括號[]內的ID,根據W3C

ID和名稱標記必須以 字母開頭([A-ZA-Z]),並且可以通過任何數量的字母,數字遵循 (「 - 」),下劃線 (「_」),冒號(「:」)和句點 (「。」)。

但真正的問題我已經是如何使用jQuery正確地選擇由id元素,如果我們必須處理無效,Zend公司生成的ID

在標準的JavaScript這似乎工作:document.getElementById('contactDetails[email]')

但在jQuery中:$('#contactDetails[email]') - 這顯然是錯誤的,因爲括號是爲屬性選擇器保留的。

我發現的簡單解決方法是將native-js選中的對象包裝到$()函數中: $(document.getElementById('contactDetails[email]'))。使用這種方法,我可以在這個對象上使用所有的jQuery函數,但是這看起來像一個黑客解決方案......?

回答

3

嘗試逃脫方括號:

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

jQuery的預期,這些地包圍屬性過濾器表達式。向下滾動到該鏈接的結尾:

http://docs.jquery.com/Selectors

從上面:

需要 轉義字符的完整列表:#; &,+ *〜':。!。「^ $ => |/

+0

我剛剛試了一下,也沒有工作 – rochal 2009-11-25 12:03:22

+0

@rochal - 最初我只放一個反斜槓請複製並粘貼以上,並試試看。 – karim79 2009-11-25 12:05:26

+0

雙斜槓完美工作,非常感謝 – rochal 2009-11-25 12:08:31