最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Can i use a function name in my jquery plugin parameters? - Stack Overflow

programmeradmin2浏览0评论

I am creating a form validation plugin for jQuery and would like it to call a function once the form has been successfully validated. The plugin will have a default callback function, but I would like to modify this through the options parameter. Unfortunately what i have (below) does not work. Any ideas?

(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
            }

            ...

I am creating a form validation plugin for jQuery and would like it to call a function once the form has been successfully validated. The plugin will have a default callback function, but I would like to modify this through the options parameter. Unfortunately what i have (below) does not work. Any ideas?

(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
            }

            ...
Share Improve this question edited Jun 12, 2009 at 5:58 Paolo Bergantino 489k82 gold badges522 silver badges437 bronze badges asked Jun 12, 2009 at 5:55 Neil MillsNeil Mills
Add a ment  | 

2 Answers 2

Reset to default 6

Remove the quotes and you're golden.

This will pass a function reference. You can then call it by doing options.callback();

You will also need to declare the function before you pass the reference along. You could get around this by doing this instead:

callback: function() { callbackFunc(); }

Pass the function itself, rather than its name (ie, remove the quotes):

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

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

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

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

            ...
发布评论

评论列表(0)

  1. 暂无评论