Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json jquery选择器不使用括号_Json_Jquery - Fatal编程技术网

Json jquery选择器不使用括号

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

我很难使用包含brakcets的jquery选择器。 基本上,我在jquery代码中解析来自服务器的JSON响应。一旦解析完成,我就迭代对象

此对象具有以下结构:

  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-是的,但您提供了额外的转义级别。请参阅我的最新答案。