如何引用原型内定义的函数

时间:2014-07-16 04:08:39

标签: javascript jquery

我正在尝试向使用jquery库的网页添加功能,该库似乎没有任何文档。 (来源不明)我的问题主要是由于对jquery插件模型和/或javascript的内部工作缺乏了解。

1。该插件按如下方式启动

jQuery('div.carousel').scrollGallery({
                mask: 'div.mask',
                slider: 'div.slideset',
                slides: 'div.slide', ............ });

2。插件在jquery中定义如下

;(function($){
        function ScrollGallery(options) {
                this.options = $.extend({
                        mask: 'div.mask', ...... }, options);
                this.init();

第3。在Object.prototype声明中,我看到定义了以下函数numSlide

ScrollGallery.prototype = {
....................
numSlide: function(c) {
                        if(this.currentStep != c) {
                                this.currentStep = c;
                                this.switchSlide();
                        }
                },
.......... };

问题。

如何在外部引用numSlide(int)功能?。

我尝试了以下方法但没有用。

myx = jQuery('div.carousel').scrollGallery({ // var myx was added in the global scope
myx.numSlide(1); //error undefined is not a function

我尝试在return this;的末尾添加myx = jQuery('div.carousel').scrollGallery({,但它仍会返回jQuery对象。

我也试过

jQuery.scrollGallery().numSlide(2); //error undefined is not a function
jQuery.scrollGallery.numSlide(2); //same error 

我是否需要添加 LIGHT BULB

// jquery plugin
        $.fn.scrollGallery = function(opt){
                return this.each(function(){
                        $(this).data('ScrollGallery', new ScrollGallery($.extend(opt,{holder:this})));
                });
        };
}(jQuery));

答案(我认为)

看起来ScrollGalary对象存储在选择器的数据中。所以我相信我可以做以下jQuery('selector').data('ScrollGallery').numSlide(2);

如果将来有人有类似的容易上当的情况,我决定在案件中发布。

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是首先启动 ScrollGallery 对象,然后再使用它。

var test = new ScrollGallery();
test.numSlide();

如果你想扩展jQuery并使用你可以按如下方式分配它的功能

$.fn.scrollGallery = new ScrollGallery();

并使用它

$("window").scrollGallery.numSlide();