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

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

我知道这是一个有点令人困惑的问题。请让我详细说明。

我需要执行从 ajax 请求中获取的文本文件中编写的 jquery script

例如我从 ajax request

得到以下代码
($($("#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 Uncaught SyntaxError: Unexpected string(…)(anonymous function) @ VM157981:2InjectedScript._evaluateOn @ VM156978:878InjectedScript._evaluateAndWrap @ VM156978:811InjectedScript.evaluate @ VM156978:667

请帮忙,非常感谢

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

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

还可以从用户@Chocula here 那里找到这个很好的答案来了解更多,

JavaScript inserted as DOM text will not execute. However, you can use the dynamic script pattern to accomplish your goal. The basic idea is to move the script that you want to execute into an external file and create a script tag when you get your Ajax response. You then set the src attribute of your script tag and voila, it loads and executes the external script.