如何在函数中执行函数

时间:2013-08-26 19:09:46

标签: javascript jquery

我有这个jQuery插件,如下所示:

(function($){  

$.fn.s3Slider = function(vars) {       

    // (...)
    timeOutFn = setTimeout(makeSlider, thisTimeOut);
    // (...)

    var makeSlider = function() {

        // next Image

    }

    makeSlider();

};  

})(jQuery);

我可以用

开始
jQuery(document).ready(function() { 
   jQuery('#s3slider').s3Slider({
       timeOut: 4000
   });
});

现在我的问题是,如何从外部执行makeSlider()函数? 这是一个Image Slider,我想添加一个Next Button功能。

我想要这样的东西,但这是错误的

jQuery.s3Slider.makeSlider();

4 个答案:

答案 0 :(得分:2)

您可以返回包含对要公开的函数的引用的对象:

(function($){  

    $.fn.s3Slider = function(vars) {       

        ...

        function next(){
           // Advance the slide here
        }

        // Return only the functions that you want to expose
        return {
          next: next
        };
    }

};  

})(jQuery);

然后你就可以使用它:

var s3Slider = jQuery('#s3slider').s3Slider({
    timeOut: 4000
});

s3Slider.next();

答案 1 :(得分:0)

$.fn.s3Slider = function(...) {

    ...

    return { makeSlider: makeSlider };
}

答案 2 :(得分:0)

目前makeSlider仅存在于s3Slider函数的范围内。

为什么不让makeSlider成为自己的插件,然后让s3Slider(和你)调用它?

(function($){
    $.fn.makeSlider = function(){
        // Next image
    };

    $.fn.s3Slider = function(vars){
        // Your code
        var that = this;
        setTimeout(function(){
            $(that).makeSlider();
        }, thisTimeOut);
    };
})(jQuery);

答案 3 :(得分:0)

你可以达到你想要的效果,但它有点复杂。

更改

$.fn.s3Slider = function(vars) {       
    // (...)
    timeOutFn = setTimeout(makeSlider, thisTimeOut);
    // (...)
    var makeSlider = function() {
        // next Image
    }
    makeSlider();
};

$.fn.s3Slider = (function(){
    var makeSlider;
    var f = function(vars) {       
        // (...)
        timeOutFn = setTimeout(makeSlider, thisTimeOut);
        // (...)
        makeSlider = function() {
            // next Image
        }
        makeSlider();
    }; 
    f.makeSlider = makeSlider;
    return f;
})();

之后,您可以将s3Slider函数用作

$(someElement).s3Slider()

并做

$.fn.s3Slider.makeSlider();

$(someElement).s3Slider.makeSlider();

从外部访问makeSlider