Jquery plugins 调用插件的内部函数

Jquery plugins 调用插件的内部函数,jquery-plugins,Jquery Plugins,这是我的插件 (function($){ $.fn.myPlugin = function(options){ var defaults = { width: 800 }; var defaults = $.extend(defaults, options); var self = this; function init(obj){ /*Initiali

这是我的插件

(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

你不能。你没有返回插件。您将返回带有匹配元素的jQuery对象(您可能应该这样做)。
测试
函数对
myPlugin
函数是私有的

要针对jQuery对象调用方法,需要像对
myPlugin()
那样扩展jQuery,如下所示:

function($){
    $.fn.myPlugin = function(options) {
        ...
    }
    $.fn.testing = function(options) {
        ...
    }
})(jQuery);
当然,这将与原始插件完全分离


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

你不能。你没有返回插件。您将返回带有匹配元素的jQuery对象(您可能应该这样做)。
测试
函数对
myPlugin
函数是私有的

要针对jQuery对象调用方法,需要像对
myPlugin()
那样扩展jQuery,如下所示:

function($){
    $.fn.myPlugin = function(options) {
        ...
    }
    $.fn.testing = function(options) {
        ...
    }
})(jQuery);
当然,这将与原始插件完全分离


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

作为这里的旁注,你不应该包装
这个
,而应该
返回这个。每个(函数(){
就足够了,它已经是一个jQuery对象了。作为这里的旁注,您不应该将
这个
包装起来,只需
返回这个。每个(函数(){
就足够了,它已经是一个jQuery对象了。不,我必须执行一个操作。这个操作可能随时都需要。我该怎么做?@coure06-你能简要描述一下这个操作吗?它需要成为
myPlugin
的一部分有什么要求?@patrick dw:我可能错了,但我相信他希望在插件的命名空间中有一个方法,所以他可能想要$.fn.myPlugin.testing=function(…){…}。这不会使jQuery的命名空间变得混乱,同时使该方法可以从外部访问。@Thomas-可能是。我不完全确定OP的目的是什么。我正在制作一些内容的动画。动画是基于要传递给该方法的一些值。不,我必须执行一个操作。这个操作可能随时都需要。我该怎么办?@coure06-可能您简要描述了该操作?它需要成为
myPlugin
的一部分的要求是什么?@patrick dw:我可能错了,但我相信他希望在插件的名称空间中有一个方法,所以他可能想要$.fn.myPlugin.testing=function(…){…}。这不会使jQuery的命名空间变得混乱,同时使该方法可以从外部访问。@Thomas-可能是。我不完全确定OP的目的是什么。我正在制作一些内容的动画。该动画基于要传递给该方法的一些值。