Jquery:在jquery的(string)变量中执行jquery脚本

时间:2016-03-29 09:56:20

标签: javascript jquery html ajax

我知道它有点令人困惑的问题。请让我详细说明。

我需要执行一个if (icon == null) { setGraphic(label); } else { final HBox hbox = new HBox(ICON_SPACING); final Label iconLabel = new Label("", icon); hbox.getChildren().addAll(iconLabel, label); setGraphic(hbox); } 写在我从jquery script请求获得的文本文件中。

e.g。我从ajax请求中获取以下代码

ajax

我需要在变量中执行并存储上述脚本的结果。

另一个简单的例子。 我已经

($($("#jstreeblock").children().children().children()[0]).children('li').attr('id'))

如果我执行上面的脚本,结果将是'a'+'b' 但是如果我使用ab运行它我会收到错误

脚本

eval

如果我将其作为

运行
<script>
var a = "'a'+'b'"
console.log(a); // printing 'a'+'b'
eval(a); // it should give ab but not giving any result
</script>

给出错误,如下所示

错误

  

VM157982:1未捕获的SyntaxError:意外的字符串(...)(匿名   功能)@ VM157981:2InjectedScript._evaluateOn @   VM156978:878InjectedScript._evaluateAndWrap @   VM156978:811InjectedScript.evaluate @ VM156978:667

请帮助,非常感谢

1 个答案:

答案 0 :(得分:1)

通常eval应该适用于这种情况。但真的不确定你是怎么称呼的。你说你称之为eval(''a'+'b''),应该是eval("'a'+'b'")。这也可能是原因。

现在,关于eval,使用它是一个危险的想法@Sosdoc建议。但是,为了解决您的问题,请查看fiddle我在哪里有一个模拟json响应,eval正常工作。我还添加了[评论]你的"'a'+'b'"案例。你也可以检查一下。它应该会给你ab

还可以从@Chocula用户here找到这个优秀的答案,了解更多相关信息,

  

作为DOM文本插入的JavaScript将无法执行。但是,你可以使用   动态脚本模式来实现您的目标。基本的想法是   将要执行的脚本移动到外部文件中   获得Ajax响应时创建脚本标记。然后你设置   你的脚本标签和瞧的src属性,它加载并执行   外部脚本。