使用jQuery的ID选择器时,不知道大家有没有发现当ID名带"+"或者","等一些特殊字符的时候是找不到控件的,这时候我们需要将ID中的特殊字符使用"\\"进行转义替换:
var id_name = "PT202007-1-A3+B2";
id_name = id_name.replace("+", "\\+");
但是,如果如下图所示存在多个相同特殊字符时候,大家会发现这样写只会替换第一个,如果我们需要全部替换,需要使用正则去匹配替换。
var id_name = "TT8004-1-D3+Z2+R7";
id_name = name.replace(new RegExp("\\+", "g"), "\\+");//使用正则可以匹配所有
如果存在多个不同的特殊字符,又需要统一判断处理的话,我们可以试试下面这个方法:
function escapeJquery(srcString) {
// 转义之后的结果
var escapseResult = srcString;
// javascript正则表达式中的特殊字符
var jsSpecialChars = ["\\", "^", "$", "*", "?", ".", "+", "(", ")", "[",
"]", "|", "{", "}"];
// jquery中的特殊字符,不是正则表达式中的特殊字符
var jquerySpecialChars = ["~", "`", "@", "#", "%", "&", "=", "'", "\"",
":", ";", "<", ">", ",", "/"];
for (var i = 0; i < jsSpecialChars.length; i++) {
escapseResult = escapseResult.replace(new RegExp("\\"
+ jsSpecialChars[i], "g"), "\\"
+ jsSpecialChars[i]);
}
for (var i = 0; i < jquerySpecialChars.length; i++) {
escapseResult = escapseResult.replace(new RegExp(jquerySpecialChars[i],
"g"), "\\" + jquerySpecialChars[i]);
}
return escapseResult;
}