在Bootstrap药片里面的JQuery LightSlider

时间:2015-11-23 02:51:56

标签: javascript jquery html css

我正在使用jQuery lightSlider作为图片滑块。我想在bootstrap药片里面有滑块(每个药丸一个滑块)。不过,我发现了以下情况:在第一个药丸中滑块是可以的。在第二个药丸中,不显示滑块内容(调整窗口大小会调出滑块内容!)。我看不出如何解决这个问题。任何帮助都将深表感谢。

我的(简体)html:

<div>
    <ul class="nav nav-pills">
        <li class="active"> <a data-toggle="pill" id="pill1" href="#s1">Pill 1</a>

        </li>
        <li> <a data-toggle="pill" id="pill2" href="#s2">Pill 2</a>

        </li>
    </ul>
</div>
<div class="tab-content">
    <div class="col-md-12 tab-pane fade in active" id="s1">
        <ul id="slider-1">
            <li>
                <p>one</p>
            </li>
            <li>
                <p>two</p>
            </li>
            <li>
                <p>tree</p>
            </li>
        </ul>
    </div>
    <div class="col-md-12 tab-pane fade active" id="s2">
        <ul id="slider-2">
            <li>
                <p>uno</p>
            </li>
            <li>
                <p>dos</p>
            </li>
            <li>
                <p>tres</p>
            </li>
        </ul>
    </div>
</div>

javascript:

function initSlider(sliderId) {
  $('#'+sliderId).lightSlider({
    item:2,
    loop:false,
    slideMove:1
  });
}

initSlider('slider-1');     
initSlider('slider-2');

Jsfiddle再现问题:https://jsfiddle.net/sedtjchs/4/

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

问题:您正尝试在已隐藏的内容(lightSlider)上调用#s2,因此插件无法计算其上的高度,宽度(等)元件。

active课程添加到第二个.panel-pane

Jsfiddle

答案 1 :(得分:0)

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {

    $('#slider-2').lightSlider({
        item:4,
        loop:false,
        slideMove:2,
        pager: false,
        easing: 'cubic-bezier(0.25, 0, 0.25, 1)',
        speed:600,
        responsive : [

            {
                breakpoint:480,
                settings: {
                    item:2,
                    slideMove:1
                }
            }
        ]
    }).refresh();
});

答案 2 :(得分:0)

我有同样的问题,但Alex的解决方案对我不起作用,因为我的标签包装器没有固定的高度,所以它会在第一次加载时在第一个标签下显示空白间隙。

ThànhNguyễn的解决方案对我有用。基本上每次单击选项卡导航时都会刷新滑块,因此LightSlider将能够计算活动容器高度。

这是完整的脚本:

$(document).ready(function() {
    $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
        $('#slider-2').lightSlider({
            item:4,
            loop:false,
            slideMove:2,
            pager: false,
            easing: 'cubic-bezier(0.25, 0, 0.25, 1)',
            speed:600,
            responsive : [

                {
                    breakpoint:480,
                    settings: {
                        item:2,
                        slideMove:1
                    }
                }
            ]
        }).refresh();
    });
});