jquery选择器不与[]一起使用

时间:2011-01-27 22:11:01

标签: javascript jquery selector

我正在使用jQuery来操作osCommerce实例中的表单数据,而我在选择一些元素时遇到了麻烦。

该脚本使用id product_description [N]生成textareas,N为1,2,3 ......

问题是,在其中使用带有[]的id值会使jQuery(甚至是常规脚本)不选择该元素而我无法使用它。

我尝试将id切换为下划线,操纵信息然后将其更改回[]但我甚至无法做到:

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

有没有办法让jQuery选择像这样的东西$('#some [2]')。function ...?

如果没有,如果有另一种方法我可以更改ID值然后就可以了,因为我可以像往常一样工作,然后将其更改回[]以便php识别该字段

是的,我知道,我可以用类别的另一种方式选择textarea,但由于te页面中有很多texareas,我需要一个唯一的名称,这将需要编辑我不想要的osCommerce脚本。我计划将我的JS贡献给oscommerce社区,而另一个人只需添加一个.js很容易,但如果他们必须编辑一个php文件让javascript工作,那么对于新手来说可能太可怕了,或者对于某个人来说可能是不可能的那已经编辑过了。

非常感谢

3 个答案:

答案 0 :(得分:2)

[]个字符在HTML4中不是有效的ID字符。如果您使用它们,请不要期望在不同浏览器中获得一致的结果。


修改

如果您无法控制服务器端ID的格式,则可以执行以下操作:

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

但在不支持querySelectorAll的浏览器中速度会非常慢。

(请注意,由于值周围有引号,因此您不需要\\。)

答案 1 :(得分:2)

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

是正确的代码,请查看jQuery.com上的“ID-Selector

答案 2 :(得分:1)

试试这个:

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

请注意,尽管这可能有效,但括号字符在HTML5之前的ID中无效(尽管它们可以在类中使用)。