2012-11-11 17 views
0



我开始制作插件,而且我在插件内的变量范围上遇到了问题。我希望能够从插件中的任何地方访问我的选项,但不知道如何,var $ opts仅对该函数可见,并且我的公共函数无法访问它。有谁知道我会怎么做?

在此先感谢,哦,如果有人注意到在我做插件不要犹豫,何况他们的方式任何错误:d如何让我的插件选项可用于所有插件?

//@@@@ Start of myViewport Plugin @@@@\\ 
(function($) { 

    $.fn.myViewport = function(options) { 
    var $opts = $.extend({}, $.fn.myViewport.defaults, options); 

    //Plugin Here 
    return this.each(function() {   

     alert('Initialising Plugin!' + $opts.privateText + $opts.publicText); 
     myPrivateFunction(); 
    }); 
    }; 

    // private functions 
    function myPrivateFunction($opts) { 
     alert($opts.privateText); 
    }; 

    // public functions 
    $.fn.myViewport.myPublicFunction = function() { 
     alert($opts.publicText); 
    }; 

    // plugin defaults 
    $.fn.myViewport.defaults = { 
    privateText: 'This is a text from the privateText defaults', 
    publicText: 'This is a text from the publicText defaults' 
    }; 

})(jQuery); 
//@@@@ End of myViewport Plugin @@@@\\ 

回答

1

像这样:

(function($) { 

    $.fn.myViewport = function(options) { 
    var o = $.extend(vp, $.fn.myViewport.defaults, options); 

    //Plugin Here 
    return this.each(function() {   

     alert('Initialising Plugin!' + o.privateText + o.publicText); 
     myPrivateFunction(); 
    }); 
    }; 

    var vp = $.fn.myViewport; 

    // private functions 
    function myPrivateFunction() { 
     alert(vp.privateText); 
    }; 

    // public functions 
    vp.myPublicFunction = function() { 
     alert(vp.defaults.publicText); 
    }; 

    // plugin defaults 
    vp.defaults = { 
    privateText: 'This is a text from the privateText defaults', 
    publicText: 'This is a text from the publicText defaults' 
    }; 

})(jQuery); 

演示here

+0

非常感谢,你能解释一下我不明白你改变了什么,什么是我的var o = $ .extend(vp,$ .fn.myViewport.defaults,options);因为我可以使用vp。对? – Thaiscorpion

+0

如果我打电话给这样的插件: $(document).myViewport({privateText:'New Text' });然后它不使用这个新文本。 – Thaiscorpion

+0

'var o'是'$ .fn.myViewport'函数中的选项,'vp'则是您不必每次都使用'$ .fn.myViewport'。工程确定对我来说:http://jsfiddle.net/NzBAe/2/ – Sparkup

相关问题