jquery之陷阱-选择器中的特殊字符转义
yin_bp
2010-04-22
最近接触jquery,觉得jquery确实比较好用,但是在使用过程中碰到不少问题,最典型的问题是选择器通过元素的#id来查找元素对象时,如果id中包含jquery的特殊字符就会导致查找失败,目前我碰到了以下特殊字符需要转义:
: . / $ [ ] 转义的方法如下: var ret = id.replace(/:/g,"\\:"); ret = ret.replace(/\./g,"\\."); ret = ret.replace(/\//g,"\\/"); ret = ret.replace(/\$/g,"\\$"); ret = ret.replace(/\[/g,"\\["); ret = ret.replace(/\]/g,"\\]"); 不知道大家还有没有更好的方法来解决这个问题,另外是不是还有别的特殊字符需要转义。 |
|
catoc
2010-04-23
引用 If you wish to use any of the meta-characters (#;&,.+*~':"!^$[]()=>|/ ) as a literal part of a name, you must escape the character with two backslashes: \\. For example, if you have an an input with name="names[]", you can use the selector $("input[name=names\\[\\]]").
|
|
yin_bp
2010-04-23
谢谢 catoc的回复
|
|
bnmcvzx
2010-04-24
可以直接$("input[name='names[]']").
|
|
yq76034150
2010-04-28
建议id命名不要使用这些特殊字符,自己给自己找麻烦
|
|
yin_bp
2010-04-28
新的项目可以去规避,但是如果要想将一些遗留系统迁移到jquery上来,就需要考虑这些问题了,呵呵
|
|
mozhi509
2010-06-04
yq76034150 写道 建议id命名不要使用这些特殊字符,自己给自己找麻烦
强顶...我想改个ID,或class花不了多少时间 |
|
turnerguo
2010-06-08
yq76034150 写道 建议id命名不要使用这些特殊字符,自己给自己找麻烦
一语道破,太正确了! |
|
zanecoy
2010-06-17
可是为了迎合struts2的表单,我不得不name="foo.bar['xxx'].yyy"
|