为什么jquery对这个选择器感到害怕?

时间:2014-02-17 15:07:21

标签: javascript jquery ruby-on-rails ruby json

我在rails应用程序上有一个ruby,它生成一个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]

SyntaxError: Unexpected token ILLEGAL

取决于我如何将字符串(引用或不引用)输入到控制台中的jQuery eval中。

非常感谢任何帮助!

谢谢!

2 个答案:

答案 0 :(得分:1)

您的错误会显示您的选择器:#condition_fields .table_form&nbspdiv[data-id=2]&nbspselect[data-attr=bar_type]

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

尝试删除.table_formdivselect之间的空格,然后输入真实空格。

如果你不能,你总是可以使用臭名昭着的转换方法:

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

答案 1 :(得分:1)

Javascript不喜欢不间断的空格。不要使用&nbsp;,而是使用&#32;