我有这个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();
答案 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
。