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

时间:2011-01-13 04:27:46

标签: jquery function jquery-plugins

如果您有可变数量的格式的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
};

我认为使用another question作为指导,但是没有看到如何正确地确定范围。任何指针都将非常感激。

谢谢:)

修改 对于那些想知道里面有什么功能的人来说,这是一个例子(从另一个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);

1 个答案:

答案 0 :(得分:0)

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