我知道在此问题上已有很多关于此问题的帖子。但它们都不适用于我的情况。
我有多个选择输入,使用以下命名格式:
select name="violationCategory[${theCount.count-1}].subCategory"
转换为:
select name="violationCategory[0].subCategory"
select name="violationCategory[1].subCategory"
.. so on
如果满足某些条件,我将在这些选择输入上应用特定类。 所以,我尝试用这样的方法替换方括号:
if(key.indexOf("[") >= 0){
key = $.trim(key).replace("name=^[","name=^\\[");
key = $.trim(key).replace("].","\\].");
alert(key);
$("#" + formId + " select[name=" + key + "]").addClass('inputBoxError');
}
警告打印:
violationCategory[1\].subCategory]
我收到错误:
Uncaught Error: Syntax error, unrecognized expression: #referralViolationForm select[name=violationCategory[1\].subCategory]
当我将代码更改为:
时key = $.trim(key).replace("].","\].");
警告打印:
violationCategory[1].subCategory]
我收到错误:
Uncaught Error: Syntax error, unrecognized expression: #referralViolationForm select[name=violationCategory[1].subCategory]
所以,基本上它既不起作用。
任何人都可以帮我解决如何逃避方括号。
答案 0 :(得分:4)
您的属性值应该包含在""
中,无需转义[
或]
$('#' + formId + ' input[name="' + key + '"]').addClass('inputBoxError');
所以翻译的选择器应该是
$('#myform input[name="violationCategory[1].subCategory"]').addClass('inputBoxError');
更新
您需要选择<select>
元素,然后您需要将元素选择器input
更改为select
,如$('#' + formId + ' select[name="' + key + '"]').addClass('inputBoxError');
答案 1 :(得分:1)
需要\
转义特殊字符。哪个也需要转义,所以 - 这是一个处理你案件的例子:http://jsfiddle.net/tb2cW/1/
这是需要转义的字符列表:~!@$%^&*()_+-=,./\';:"?><[]{}|
和`