检查功能存在于jQuery插件中

时间:2012-12-06 21:51:47

标签: javascript jquery

我正在为我正在进行的项目推出自己的jQuery表单验证器。我正在定义输入元素的数据验证所需的验证类型。

我想在调用之前检查我的插件中是否存在此验证函数(所有这些都在插件本身内)。

在我使用之前:

if($.isFunction(window['functionName']))
    window['functionName']();

然而,这似乎不适用于我的插件:

(function( $ ) {
    $.fn.validateForm = function(options) {

        ...

        findInputs();

        function validateRequired(input) {

        }

        function findInputs() {

            ...

            if($(this).attr("data-validate"))
            {
                // Get list of required validation functions
                var toValidate = $(this).attr("data-validate").split(/\s+/);

                for(var i = 0; i < toValidate.length; i++) {
                    // Hardcoded function name call for testing
                    if($.isFunction(window['validateRequired']))
                        window['validateRequired']();
                }
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

处理此问题的最佳方法是将函数声明为对象文字的一部分。这样,您可以在插件中引用文字,如下所示:

(function( $ ) {
    var methods = {
        validateRequired: function(input)
        {
            // STUB
        }
    };

    $.fn.validateForm = function(options) {
        function findInputs() {

            if($.isFunction(methods['validateRequired'])) methods['validateRequired']();

        }
    };
});

答案 1 :(得分:0)

我不是JS专家,但试试这个:

if(typeof (someFunction) == 'function') {
// do something
}

修改

或者像这样,使用函数名作为字符串:

if(typeof this["functionName"] == "function") {
     this["functionName"](); //it exists, call it
 }

我在这里找到了这个:

javascript: how to judge a function name exists? /见尼克克拉弗回答。

通过谷歌搜索:“函数名称存在javascript”

如果您正在搜索有关jQuery的内容 - 请尝试使用javascript关键字而不是jQuery进行搜索。 jQuery是一个用javascript编写的框架。