BxSlider:在window.resize上调用onSliderLoad

时间:2016-03-03 14:47:07

标签: jquery bxslider

我想在窗口调整大小时重新加载BxSlider并触发回调 - 但是,我无法让它工作。

我有this script,当窗口大小小于768px时,它将在单独的div中克隆并显示标题 - 它按预期工作,但在我调整浏览器窗口大小时则不行。不知怎的,onSliderLoad和onSlideBefore中的函数不起作用 - 显然是因为字幕已经从DOM中消失了 - 任何想法为什么?

我使用了this guide

我的代码:

var windowsize = $(window).width();
var slider = $('.bxslider').bxSlider({
    auto: true,
    autoHover: true,
    controls: false,
    infiniteLoop: true,
    onSliderLoad: function(currentIndex) {
        if (windowsize < 768) {
            $("#caption").html($('.bxslider li').eq(currentIndex + 1).find(".bx-caption").clone());
        }
    },
    onSlideBefore: function($slideElement, oldIndex, newIndex) {
        if (windowsize < 768) {
            $("#caption").html($slideElement.find(".bx-caption").clone());
        }
    }
});
$(window).resize(function() {
    slider.reloadSlider({
        auto: true,
        autoHover: true,
        controls: false,
        infiniteLoop: true,
        onSliderLoad: function(currentIndex) {
            $("#caption").html($('.bxslider li').eq(currentIndex + 1).find(".bx-caption").clone());
        },
        onSlideBefore: function($slideElement, oldIndex, newIndex) {
            if (windowsize < 768) {
                $("#caption").html($slideElement.find(".bx-caption").clone());
            }
        }
    });
});

1 个答案:

答案 0 :(得分:0)

似乎更改标题类名称和函数内部的选择器就可以了。此代码有效:

var windowsize = $(window).width();
        var slider = $('.bxslider').bxSlider({
            auto: true,
            autoHover: true,
            controls: false,
            infiniteLoop: true,
            onSliderLoad: function(currentIndex) {
                if (windowsize < 768) {
                    $("#caption").html("");
                    $('.bxslider li').eq(currentIndex + 1).find(".caption").clone().appendTo("#caption");
                }
            },
            onSlideBefore: function($slideElement, oldIndex, newIndex) {
                if (windowsize < 768) {
                    $("#caption").html("");
                    $slideElement.find(".caption").clone().appendTo("#caption");
                }
            }
        });
        $(window).resize(function() {
            slider.reloadSlider({
                auto: true,
                autoHover: true,
                controls: false,
                infiniteLoop: true,
                onSliderLoad: function(currentIndex) {
                    if (windowsize < 768) {
                        $("#caption").html("");
                        $('.bxslider li').eq(currentIndex + 1).find(".caption").clone().appendTo("#caption");
                    }
                },
                onSlideBefore: function($slideElement, oldIndex, newIndex) {
                    if (windowsize < 768) {
                        $("#caption").html("");
                        $slideElement.find(".caption").clone().appendTo("#caption");
                    }
                }
            });
        });