我可以在我的jquery插件参数中使用函数名吗?

时间:2009-06-12 05:55:29

标签: javascript jquery jquery-plugins

我正在为jQuery创建一个表单验证插件,并希望它在成功验证表单后调用一个函数。 该插件将具有默认的回调函数,但我想通过options参数修改它。 不幸的是我拥有(下面)不起作用。有什么想法吗?

(function($){
    $.fn.extend({
        validify : function(options) {
            var defaults = {
                callback: "callbackFunc",
            };

            var options = $.extend(defaults,options);

            return this.each(function(){
                //validation code here
                //if valid call the function
                if(errors==0){
                    options.callback;
                }


            function callBackFunc(){
                // the default callback function
            }

            ...

2 个答案:

答案 0 :(得分:6)

删除引号,你就是金色。

这将传递一个函数引用。然后,您可以通过执行options.callback();

来调用它

您还需要在传递引用之前声明该函数。你可以通过这样做来解决这个问题:

callback: function() { callbackFunc(); }

答案 1 :(得分:1)

传递函数本身,而不是其名称(即删除引号):

(function($){
    function callBackFunc(){
      // the default callback function
    }

    $.fn.extend({
        validify : function(options) {
            var defaults = {
                callback: callbackFunc // IMPORTANT: remove quotes AND trailing comma
            };

            var options = $.extend(defaults,options);

            return this.each(function(){
                //validation code here
                //if valid call the function
                if(errors==0){
                    options.callback();  // note parentheses
                }

            ...