调用插件的内部函数

时间:2010-10-03 13:31:44

标签: jquery-plugins

这是我的插件

(function($){
    $.fn.myPlugin = function(options){

        var defaults = {
            width: 800
        };

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

        var self = this;

        function init(obj){
            /*Initialize object*/
            self.myPlugin.doAnimation(600,400);
        }

        $.fn.myPlugin.doAnimation = function(lV, rV){
            /*Doing some animation work*/
        }           

        return this.each(function(options){
            init(this);
        });         
    }
})(jQuery);

我正在尝试这样

var t = $('#id1').myPlugin();
t.doAnimation();  //getting error here, t.doAnimation is not a function

1 个答案:

答案 0 :(得分:1)

你做不到。你没有退回插件。你将使用匹配的元素返回jQuery对象(就像你应该的那样)。无论如何,testing函数对myPlugin函数是私有的。

要针对jQuery对象调用方法,您需要像对myPlugin()一样扩展jQuery,如:

function($){
    $.fn.myPlugin = function(options) {
        ...
    }
    $.fn.testing = function(options) {
        ...
    }
})(jQuery);

当然,这与原始插件完全分开。

我不知道你的插件是做什么的,但如果你需要在每个元素的基础上在插件之间共享一些数据,你可以使用jQuery的.data()方法。