8

尝试做angular.element(stringWithHtmlStructure);原因

Error: Syntax error, unrecognized expression: <div id="foo">bar</div>

在 jquery 1.9.1 中,但它在 jquery 1.8.3 中有效

是问题还是功能?可能是安全一号?我该如何处理?

1.8.3 示例http://plnkr.co/edit/ZYYKIixcYzOL46hq0puS?p=preview 1.9.1 示例http://plnkr.co/edit/ETmQMY8KoCP0gaKdSrMD?p=preview

这绝对不是任何有角度的东西的问题,做$(stringWithHtmlStructure)同样的失败,你可以在这里看到http://plnkr.co/edit/FqvOKZ62t0IJ57cT05ew?p=preview

4

2 回答 2

8

问题肯定出在 jquery 1.9.1

带有前导空格的 HTML 字符串:出于安全原因,jQuery 1.9 限制了由 $() 处理的字符串。尽管我们建议您使用 $.parseHTML() 来处理任意 HTML,例如模板,但 1.1.0 版本的 Migrate 插件恢复了旧的行为。

处理它的方法是使用任何类型的修剪功能,无论是 jquery 的 $.trim 还是下划线修剪甚至你自己的。

请注意,仅在尝试使用 $templateCache 中的模板时才会出现此问题,如果您在指令上使用 template 或 templateUrl attr 它工作正常,我猜角度内部会修剪它。

于 2013-04-20T15:53:38.687 回答
3

如果您的字符串包含前导空格,您应该删除它们。

这应该有效:

angular.element($.trim(stringWithHtmlStructure));
于 2013-04-20T15:53:45.387 回答