jQuery从一个字符串调用函数

这个问题在这里已经有了答案:

  • 当我的名字作为字符串29答案时如何执行JavaScript函数

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

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

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

    例子:

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

    如果你知道你可以信任输入,这将起作用。 但是,如果你不确定这一点,你应该在试图运行它之前检查函数是否存在,否则你会得到一个错误。

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

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

    $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;
    }
    

    和形式

    <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>
    
    链接地址: http://www.djcxy.com/p/94821.html

    上一篇: jQuery call function from a string

    下一篇: Calling a JavaScript function named in a variable