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"
Global site tag (gtag.js) - Google Analytics