我在处理滑块属性的JavaScript函数中遇到问题。我有3张.slide类别的幻灯片,每次我“选择”其中一张时,我都将其设置为.active-slide类别。问题在于,如果displayactive-slide属性是table,当我设置此类时,它会自动更改为block,而我不明白为什么。
P.s.我也在用引导程序。
我在这里发布与该问题有关的部分代码:

HTML:

<div class="slider">
        <div class="slide active-slide">
            <div class="container up">
                <div class="row">
                    <div class="col-md-5 slide-text">
                        <h1 class="slide-title">whatuwant</h1>
                        <p class="slide-par">whatuwant</p>
                        <a href="#" class="slide-link">whatuwant</a>
                    </div>
                    <div class="col-md-7" id="first-slide-image">
                        <img src="whatuwant"/>
                    </div>
                </div>
            </div>
        </div>

        <div class="slide">
            <div class="container up">
                <div class="row">
                    <div class="col-md-5 slide-text">
                        <h1 class="slide-title">whatuwant</h1>
                        <p class="slide-par">whatuwant</p>
                    </div>
                    <div class="col-md-7" id="second-slide-image">
                        <img src="whatuwant"/>
                    </div>
                </div>
            </div>
        </div>

        <div class="slide">
            <div class="container up">
                <div class="row">
                    <div class="col-md-5 slide-text">
                        <h1 class="slide-title">whatuwant</h1>
                        <p class="slide-par">whatuwant</p>
                    </div>
                    <div class="col-md-7 slide-image" id="third-slide-image">
                        <img src="whatuwant"/>
                    </div>
                </div>
            </div>
        </div>
    </div>


CSS:

.container {
    width: 1024px;
}

.up{
    display: table-cell;
    vertical-align: middle;
    max-width: 1024px;
    max-height: 470px;
}

.row{
    width: 1024px;
    margin: 0 auto;
    max-width: 1024px;
}

.slider {
    position: relative;
    width: 100%;
    height: 470px;
}

.slide {
    display: none;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

.active-slide{
    display: table;
}


JavaScript:

$(document).ready(function() {
 $('.buttonfornextslide').click(function() {
    var currentSlide = $('.active-slide');
    var nextSlide = currentSlide.next();

    if(nextSlide.length === 0) {
      nextSlide = $('.slide').first();
    }

    currentSlide.fadeOut(600).removeClass('active-slide');
    nextSlide.fadeIn(600).addClass('active-slide');
  });


  $('.buttonforpreviousslide').click(function() {
    var currentSlide = $('.active-slide');
    var prevSlide = currentSlide.prev();

    if(prevSlide.length === 0) {
      prevSlide = $('.slide').last();
    }

    currentSlide.fadeOut(600).removeClass('active-slide');
    prevSlide.fadeIn(600).addClass('active-slide');
  });
});


我试图将其简化到最大可能的程度。
如果问题不清楚:如何将.active-slide显示属性保留为table

最佳答案

当使用fadeIn,slideDown等时,jQuery会自动为元素分配“默认”样式。由于div的默认样式为“块”,因此将被应用。代替使用“ active-slide”类,尝试专门设置CSS

....
prevSlide.fadeIn(600).css('display','table');


参考:

jQuery bug

Fiddle-您可以看到“ display”块是类的样式,您必须在fadeIn函数之后按字面意义添加它。

在小提琴中,添加



.css('display','block');





并运行它,您将看到更改

09-17 15:17
查看更多