Javascript 为什么jquery会对这个选择器感到不安?

Javascript 为什么jquery会对这个选择器感到不安?,javascript,jquery,ruby-on-rails,ruby,json,Javascript,Jquery,Ruby On Rails,Ruby,Json,我有一个RubyonRails应用程序,它生成一个json字符串并将其保存在一个div数据属性中。这是在浏览器中呈现之前ruby文件中的字符串: '{"all":{"$(\'#condition_fields .table_form div[data-id=2]&nbspselect[data-attr=bar_type]\')":{"equal":"Baz"}}}' 在浏览器中检查时,json字符串显示如下: data-dependencies="

我有一个RubyonRails应用程序,它生成一个json字符串并将其保存在一个div数据属性中。这是在浏览器中呈现之前ruby文件中的字符串:

'{"all":{"$(\'#condition_fields .table_form div[data-id=2]&nbspselect[data-attr=bar_type]\')":{"equal":"Baz"}}}'
在浏览器中检查时,json字符串显示如下:

data-dependencies="{"all":{"$('#condition_fields .table_form div[data-id=2] select[data-attr=bar_type]')":{"equal":"Baz"}}}"
jQuery插件通过调用eval来使用该字符串中的选择器。当jQuery插件输出到控制台时,选择器如下所示:

$('#condition_fields .table_form div[data-id=2] select[data-attr=bar_type]')
我还没有找到为jQuery生成可用选择器的转义组合。我要么得到

Error: Syntax error, unrecognized expression: #condition_fields .table_form&nbspdiv[data-id=2]&nbspselect[data-attr=bar_type]

这取决于我如何将字符串(带引号或不带引号)输入控制台中的jqueryeval

任何帮助都将不胜感激


谢谢

您的错误显示您的选择器:
#条件_字段。表格 div[data id=2] select[data attr=bar\u type]

正如你所看到的,有一个不间断的空间。它是一个特殊字符,jQuery无法将其识别为空格

尝试删除
.table_form
div
选择之间的空格,然后输入一个真正的空格

如果不能,您可以始终使用臭名昭著的转换方法:

$('<div>').html(youString).text();
$('').html(youString.text();

Javascript不喜欢不间断的空格。不要使用
,而是使用
  > 

你能考虑替换表达式“FRACKOUT”吗?我在这里有点暗中射击,但是在Ruby文件中使用<代码> <代码>的原因是什么?而不是文字空间?为什么JSON格式化成这样?你能改变它的组成方式吗?现在,jquery语句是对象的
key
。这意味着您必须做一些非常可疑的事情才能从中获得有用的东西,比如对对象的
进行
eval
,而您无法可靠地获取该键。此外,作为
key
值的jQuery代码只是在JSON解析器中自找麻烦。此时正在抛出一个分析错误。
“”。替换(/\s/g,”)-->
“”
。还是我在这里误解了什么?@Cerbrus,这取决于他说他的输出是
$(“#条件#字段。表#form div[data id=2]select[data attr=bar\u type]”)
被转换成空白字符。但是,如果未转换,则不会更改。将控制台中的替换为空格仍然会产生SyntaxError:意外令牌非法错误。替换in-teh ruby会产生未捕获的语法错误:意外的输入结束错误。
$('<div>').html(youString).text();