从一个string的jQuery调用函数

有可能通过使用string来调用一个函数吗?

(即)我有一个variablesvar target = 'next'; 。 使用这个string我想调用jquery方法next() 。 我应该使用target + '()' (这是愚蠢的)来调用next()

我知道这可以使用conditional语句来完成。 由于这是从用户那里得到的string,但是很难为所有这些使用条件语句。

在我的jQuery插件中,用户将传递值prevsiblings等作为选项,以便相应的jQuery方法将被执行。

我如何实现这个?

您可以使用括号表示法以包含标识符的string访问成员:

 var target = 'next'; $("foobar")[target](); // identical to $("foobar").next() 

如果你想使用jQuery,答案是非常优雅的。 因为jQuery是一个对象(可以像数组一样访问) – 你可以使用$("selector")[target]()

例子:

 var target = 'next'; jQuery("selector")[target](); 

如果你知道你可以信任这个input,这将起作用。 但是,如果您不确定这一点,则应在运行之前检查该函数是否存在,否则将会出现错误。

 var target = 'doesNotExist'; if (jQuery.isFunction(target)) { jQuery('selector')[target](); } 

在我的情况下,我需要从rel属性中获取值,然后将其parsing为一个函数,这对我有用。

 $jq('#mainbody form').submit(function(e){ var formcheck = $jq(this).attr('rel'); if (typeof window[formcheck] === 'function'){ formok = window[formcheck](); e.preventDefault(); } }); function maincheck(){ alert("Checked"); return false; } 

和forms

 <div id="mainbody"> <form action="mainpage.php" method="post" rel="maincheck"> <input type="hidden" name="formaction" value="testpost"> <label>Field 1 <input type="text" name="field1" value="<?=$_POST['field1'];?>"></label><br> <label>Field 2 <input type="text" name="field2" value="<?=$_POST['field2'];?>"></label><br> <input type="submit" value="Submit Form"> </form> </div>