我正在使用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工作,那么对于新手来说可能太可怕了,或者对于某个人来说可能是不可能的那已经编辑过了。
非常感谢
答案 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中无效(尽管它们可以在类中使用)。