2011-01-27 285 views
0

我正在使用jQuery來操作osCommerce實例中的表單數據,並且在選擇某些元素時遇到了問題。jquery selector not working with []

腳本生成文本域與該ID PRODUCT_DESCRIPTION [N],其中N是1,2,3 ...

的問題是,具有與值[]的ID在它使jQuery的(甚至楷書)不選擇元素,我無法使用它。

我試過的ID轉換爲下劃線,操縱信息,然後改回爲[],但我不能連做:

$('#product_description[1]').attr('id','products_description_1'); 

有沒有辦法讓jQuery的選擇是這樣的$('#some [2]')。function ...?

如果沒有,如果有另一種方式我可以改變ID值,那麼它的確定,因爲我可以作爲平時的工作,然後改回至[]的PHP認識到外地

是的,我知道,我可以按照另一種方式選擇textarea,但是由於在頁面中有許多texareas,我需要一個唯一的名稱,並且需要編輯我不想要的osCommerce腳本。我計劃把我的JS貢獻給oscommerce社區,另一個人只需添加一個.js文件很簡單,但如果他們必須編輯一個用於JavaScript的PHP文件才能工作,那麼可能對於新手來說太可怕了,或者對某個人來說不可能已經編輯它。

非常感謝

回答

1

試試這個:

$('#product_description\\[1\\]') 

注意,雖然這可能工作,括號字符不適用於在標識前HTML5的使用(儘管他們很好的使用類)。

+0

+1此外,它是一個屬性存在選擇器:http://www.w3.org/TR/2009/PR-css3-selectors-20091215/#attribute-representation – 2011-01-27 22:13:15

+0

是的,我知道,有效與否,它是一個愚蠢的想法在標籤值中使用[]時也可以輕鬆使用_。我向osCommerce開發者彙報了這一點。 – Juan 2011-01-28 20:18:01

2

[]字符在HTML4中不是有效的ID字符。如果您使用它們,請不要期望在不同瀏覽器中獲得一致的結果。


編輯:

如果你只是無法控制服務器端的ID的格式,你可以這樣做:

$("*[id='product_description[1]']") 

但是這將是非常緩慢的在不支持querySelectorAll的瀏覽器中。

(請注意,你不應該需要\\這裏,因爲周圍的值引號的。)

2
$("#product_description\\[1\\]").attr("id", "products_description_1"); 

是正確的代碼,看看「ID-Selector」上jQuery.com