Jquery:在Jquery的(字符串)变量中执行Jquery脚本

Jquery: Execute jquery script in a (string)variable from jquery

本文关键字:Jquery 变量 执行 脚本 字符串      更新时间:2023-09-26

我知道这个问题有点令人困惑。请允许我详细说明。

我需要执行一个写在文本文件中的jquery script,该文件是我从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>

如果我将其作为运行

eval(''a'+'b'') 

给出错误,在下方给出

错误

VM157982:1未捕获语法错误:意外的字符串(…)(匿名函数)@VM157981:2InjectedScript_评估On@VM156978:878注入脚本_评估和包装@VM156978:811 InjectedScript.evaluate@VM156978:667

请帮忙,非常感谢

通常eval在这种情况下应该工作。但真的不确定你是怎么称呼它的。你说你叫它eval(''a'+'b''),应该是eval("'a'+'b'")。这可能也是原因。

现在,对于eval,按照@Sosdoc的建议使用它是一个危险的想法。然而,为了解决您的问题,请检查这个小提琴,我有一个模拟的json响应,eval工作正常。我还添加了[评论]您的"'a'+'b'"案例。你也可以检查一下。结果应该会给你ab

在这里也可以从用户@Chocula找到这个极好的答案来了解更多关于这个的信息,

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