如何在.each()jQuery中访问插件方法

时间:2014-08-07 07:01:05

标签: javascript jquery

我在我的网站上使用bxSlider。这是我的剧本:

handleBxSlider = function(){
    var initSliders, destroySliders;

    initSliders = function(){
        jQuery('.bxslider').each(function(){
            jQuery(this).bxSlider({
                slideWidth: 5000,
                minSlides: jQuery(this).attr("min-slides") || 4,
                maxSlides: jQuery(this).attr("min-slides") || 5,
                slideMargin: jQuery(this).attr("slide-margin") || 20
            });
        });
    };

    destroySliders = function(){
        initSliders.destroySlider();
    };

    initSliders();
    destroySliders();

};

bxSlider有方法destroySlider();。我需要通过调用handleBxSlider来访问bxSlider's插件中的所有公开方法。

就像是handleBxSlider.destroySlider();来破坏滑块,或者handleBxSlider.initSliders();来重新初始化滑块。 但是destroySliders();没有用。如何在initSliders function()内访问bxSlider的公共方法?

或者有最好的解决方案吗?

无论如何,这是fiddle

1 个答案:

答案 0 :(得分:1)

initSliders中,您只需创建bxSlider即可在内部范围内找到对象。我添加了所有滑块对象所在的数组sliderArray。现在通过调用destroySliders你可以破坏滑块。

handleBxSlider = function () {
    var initSliders, destroySliders, sliderArray = [];

    initSliders = function () {
        jQuery('.bxslider').each(function () {
            var sliderObj = jQuery(this).bxSlider({
                slideWidth: 5000,
                minSlides: jQuery(this).attr("min-slides") || 4,
                maxSlides: jQuery(this).attr("min-slides") || 5,
                slideMargin: jQuery(this).attr("slide-margin") || 20
            });
            sliderArray.push(sliderObj)
        });
    };

    destroySliders = function () {
        for (var i = 0; i < sliderArray.length; i++) {
            sliderArray[i].destroySlider();
        }
    };

    initSliders();
    destroySliders();
};