Javascript 不使用eval()从字符串执行jquery命令

Javascript 不使用eval()从字符串执行jquery命令,javascript,jquery,eval,Javascript,Jquery,Eval,我有一个jquery命令的javascript数组: var a = ["$('div').hide();","$('span').show();","$('p').fadeIn(100);"]; 我想执行数组中的第一个命令,但不使用 eval(a[0]); 有没有更好的办法 谢谢。考虑到您的先决条件:不 更好的解决方案是更改数组,使其包含函数而不是字符串 var a = [ function () { $('div').hide(); }, func

我有一个jquery命令的javascript数组:

var a = ["$('div').hide();","$('span').show();","$('p').fadeIn(100);"];
我想执行数组中的第一个命令,但不使用

eval(a[0]);
有没有更好的办法


谢谢。

考虑到您的先决条件:不

更好的解决方案是更改数组,使其包含函数而不是字符串

var a = [
    function () {
        $('div').hide();
    },
    function () {
        $('span').show();
    },
    function () {
        $('p').fadeIn(100);
    }
];

a[0]();

考虑到你的先决条件:不

更好的解决方案是更改数组,使其包含函数而不是字符串

var a = [
    function () {
        $('div').hide();
    },
    function () {
        $('span').show();
    },
    function () {
        $('p').fadeIn(100);
    }
];

a[0]();
这不是一种更好的方法,而是一种不同的方法:

// create a new script element
var elem = document.createElement("script");
elem.type = "text/javascript";
elem.innerHTML = a[0];

// add it to the document body so it gets executed
document.getElementsByTagName("body")[0].appendChild(elem);
但是,如果您可以选择从不同的数据结构开始,并使用函数而不是源代码,则会变得更简单、更清晰:

var a = [
    function() { $('div').hide(); },
    function() { $('span').show(); }
    function() { $('p').fadeIn(100); }];
// invokation is clean
a[0]();
这不是一种更好的方法,而是一种不同的方法:

// create a new script element
var elem = document.createElement("script");
elem.type = "text/javascript";
elem.innerHTML = a[0];

// add it to the document body so it gets executed
document.getElementsByTagName("body")[0].appendChild(elem);
但是,如果您可以选择从不同的数据结构开始,并使用函数而不是源代码,则会变得更简单、更清晰:

var a = [
    function() { $('div').hide(); },
    function() { $('span').show(); }
    function() { $('p').fadeIn(100); }];
// invokation is clean
a[0]();

也可以使用包含函数的对象

var a = {
    hideDiv: function () {
        $('div').hide();
    },
    showSpan: function () {
        $('span').show();
    },
    fadeinP: function () {
        $('p').fadeIn(100);
    }
}
像这样使用它

a.hideDiv();
a.showSpan();
a.fadeinP();

您还可以使用包含函数的对象

var a = {
    hideDiv: function () {
        $('div').hide();
    },
    showSpan: function () {
        $('span').show();
    },
    fadeinP: function () {
        $('p').fadeIn(100);
    }
}
像这样使用它

a.hideDiv();
a.showSpan();
a.fadeinP();

为什么要用字符串开头?新函数(a[0])()适合你吗!!!-(这与使用eval:()@ArunPJohny相同-也就是说,实际上,
eval
是另一个名字。@Quentin这就是为什么
!!!
为什么要用字符串来启动它?新函数(a[0])()对你有效吗!!!-(这与使用eval:()@ArunPJohny-也就是说,实际上,
eval
是另一个名字。@Quentin这就是为什么
!!!
是第一个选项真的比使用eval()好吗?毕竟不是一样吗?这就是为什么我说它不同但不是更好,是的,它基本上是一个
eval
。第一个选项真的比使用eval()好吗这就是为什么我说它不同但不是更好,是的,它基本上是一个
eval