从一个string的jQuery调用函数
有可能通过使用string来调用一个函数吗?
(即)我有一个variablesvar target = 'next';
。 使用这个string我想调用jquery方法next()
。 我应该使用target + '()'
(这是愚蠢的)来调用next()
?
我知道这可以使用conditional
语句来完成。 由于这是从用户那里得到的string,但是很难为所有这些使用条件语句。
在我的jQuery插件中,用户将传递值prev
, siblings
等作为选项,以便相应的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>