jquery从var值调用一个函数

时间:2010-01-10 02:03:10

标签: jquery function call

(function($) {

$.fn.myFoo= function (o){
    this.element = $(this)

    options = jQuery.extend({
         name: "defaultName",
         size: 5,
         global: true
      }, o);

    _min = function (){ //am i private method?
        alert('dud');
    }
    max = function (){ //am i public method?
        alert('max');
    }
    return this.o(); //o= 'max'
}
})(jQuery);

问题1 =如果我要使用这一行,有没有办法调用上面的max方法/函数 $('#id').myFoo('max'); 问题2 =我知道在jquery小部件上,下划线“_”会将该方法标记为私有。这是$ .fn的相同​​案例吗?

请注意,return this.o();行是错误的,只是在那里展示我想要完成的事情

1 个答案:

答案 0 :(得分:2)

您的代码存在一些问题:

首先,当您运行它时,您将得到三个全局变量,max_minoptions

JavaScript是函数范围的,但你应该使用var语句来声明变量,如果不使用它,并且你在作用域链中找不到你所赋予的标识符,它们将会成为Globlal对象的属性(window)。

其次,我认为你想调用一个作为String参数传递的函数,如果是这样的话,我建议你使用一个对象来分组你的函数,并且如果你只定义你的函数就能得到它们作为变量,它们不绑定到可访问的对象(技术变量,参数和函数声明标识符绑定到不可访问的 Variable Object),例如:

(function ($) {
  $.fn.myFoo= function (o){
    var privateFunction = function (){ 
      alert('private');
    };

    var functions = {
      _min: function (){ 
        alert('_min');
      },
      max: function (){
        alert('max');
      }
    };


    functions[o](); // invoke the function
    // ...
    return this; // preserve the jQuery method "chainability"
  };
})(jQuery);

编辑:如果要声明“私有函数”(不能通过String参数调用),可以简单地将其声明为$.fn.myFoo函数中的变量。 / p>

它将可供所有“公共函数”(functions对象的所有成员)使用,但您将无法使用o参数执行它。