Json jquery选择器不使用括号
我很难使用包含brakcets的jquery选择器。 基本上,我在jquery代码中解析来自服务器的JSON响应。一旦解析完成,我就迭代对象 此对象具有以下结构:Json jquery选择器不使用括号,json,jquery,Json,Jquery,我很难使用包含brakcets的jquery选择器。 基本上,我在jquery代码中解析来自服务器的JSON响应。一旦解析完成,我就迭代对象 此对象具有以下结构: errors = { input#title_id: "error message", select#authors_id[]: "error message 2" } 然后我像下面这样迭代这个映射: $.each(errors, function(fieldSelector,errMsg){ fieldSe
errors = {
input#title_id: "error message",
select#authors_id[]: "error message 2"
}
然后我像下面这样迭代这个映射:
$.each(errors, function(fieldSelector,errMsg){
fieldSelector = fieldSelector.replace('[','\\\\[');
fieldSelector = fieldSelector.replace(']','\\\\]');
$(fieldSelector).hide(); //for the example
}
除了带有括号的id的select外,其他一切都很好 根据,您需要使用两个括号来转义元字符:
如果您希望使用任何元字符(例如
!“#$%&'()*+,./:;?@[\]^{124;}
)作为名称的文字部分,
必须用两个反斜杠转义字符:\\
。
例如,如果有一个元素具有id=“foo.bar”
,则可以
使用选择器$(“#foo\\\.bar”)
但是,双括号仅在选择器字符串中存在单括号字符时才需要。选择器引擎随后使用该括号转义元字符。无论如何,这意味着您的代码也只需要使用两个括号-无需提供额外的转义级别:
$.each(errors, function(fieldSelector,errMsg){
fieldSelector = fieldSelector.replace('[','\\[');
fieldSelector = fieldSelector.replace(']','\\]');
$(fieldSelector).hide(); //for the example
});
根据,您需要使用两个括号来转义元字符:
如果您希望使用任何元字符(例如
!“#$%&'()*+,./:;?@[\]^{124;}
)作为名称的文字部分,
必须用两个反斜杠转义字符:\\
。
例如,如果有一个元素具有id=“foo.bar”
,则可以
使用选择器$(“#foo\\\.bar”)
但是双括号是必需的,这样选择器字符串中就有一个单括号字符\
。选择器引擎随后使用该括号转义元字符。无论如何,这意味着您的代码也只需要使用两个括号-不需要提供额外的转义级别:
$.each(errors, function(fieldSelector,errMsg){
fieldSelector = fieldSelector.replace('[','\\[');
fieldSelector = fieldSelector.replace(']','\\]');
$(fieldSelector).hide(); //for the example
});
回答稍微简单一点——您可以使用没有特殊语法的gEBI来代替Sizzle
$.each(errors, function(fieldSelector,errMsg){
$(document.getElementById(fieldSelector)).hide(); //for the example
}
回答稍微简单一点——您可以使用没有特殊语法的gEBI来代替Sizzle
$.each(errors, function(fieldSelector,errMsg){
$(document.getElementById(fieldSelector)).hide(); //for the example
}
您的意思是在服务器端定义它吗?因为在PHP脚本中调用json_encode函数后,我收到了
errors
。是的,但我认为这是我在fieldSelector
上使用replace所做的,不是吗?@renard-是的,但您提供了额外的转义级别。请参阅我的更新答案。您的意思是在服务器端定义它吗?因为在PHP脚本中调用json_encode函数后,我收到了errors
。是的,但我认为这是我在fieldSelector
上使用replace所做的,不是吗?@renard-是的,但您提供了额外的转义级别。请参阅我的最新答案。