2011-01-27 208 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

相关问题