如何使用函数名作为参数应用jquery函数?

如何使用函数名作为参数应用jquery函数?,jquery,function,jquery-plugins,Jquery,Function,Jquery Plugins,如果您有不同数量的jQuery插件,其格式如下: (function($){ $.fn.toolSet_themeOne = function () { // params }; })(jQuery); (function($){ $.fn.toolSet_themeTwo = function () { // params }; })(jQuery); 如果每个插件的定义不能保证相同,并且在下划线后可能包含某种程度的名称变化

如果您有不同数量的jQuery插件,其格式如下:

(function($){
    $.fn.toolSet_themeOne = function () {
        // params
    };
})(jQuery);


(function($){
    $.fn.toolSet_themeTwo = function () {
        // params
    };
})(jQuery);
如果每个插件的定义不能保证相同,并且在下划线后可能包含某种程度的名称变化,那么如何在以下情况下应用这些定义:

var themeApply = function (jQueryCollection, objSettings, pluginName) {
    // this does not work and reports pluginName is not a function
    jQueryCollection.pluginName(objSettings);
    // $.fn[pluginName] is reported as a function
};
我想用它作为指导,但不知道如何正确地确定范围。任何指点都将不胜感激

谢谢:)

编辑: 对于那些想知道里面有什么功能的人来说,这是一个例子(从另一个SO答案中学到的),我找不到直接的参考:

(function($){

    $.fn.toolSet_themeOne = function () {

        var methods = [
            update: update
        ];

        var init = function (options) {
            // normal jquery initialisation here
        };

        var update = function (data) {
            // do something with data
            // if not initialising, but calling after initialisation
        };

        // what do we do on initialisation?
        if(arguments.length > 0) {
    if('string' === typeof(arguments[0]) && 'undefined' !== typeof(methods[arguments[0]])) {
        var args = Array.prototype.slice.call(arguments);  
        args = args.shift();
        methods[arguments[0]].apply(this,args);
    } else if('object' === typeof(arguments[0])) {
        init.apply(this, arguments);
    }
    } else {
    init.apply(this, arguments);
    }
    return this;
    };
})(jQuery);

jQueryCollection[pluginName](objSettings)
不起作用吗?

Hi Yade。我现在正在尝试两个选项。你的第一个例子是:$('tools')[pluginName](objSettings);第二个例子是:$.fn[pluginName]。apply($('tools'),objSettings);我马上回来报告。[~几分钟后~]尝试登录给你评分-开放id不起作用-上述两种解决方案似乎都起作用-你是正确的。我不明白它是如何工作的-但它对我有效:)谢谢Yads@ArcaneErudite没问题,您调用它的方式是试图在jQueryCollection对象上找到一个名为pluginName的方法。这与通过说出obj.property或obj[“property”]@Yads访问对象属性/方法的方式相同-我可能说得太快了,插件确实被调用了,但参数是空的。我想知道这是争论问题还是范围问题。现在检查:)$(“#工具”)[pluginName](对象设置);此方法有效,但第二种方法无效。:)