javascript - 根据类淡出 div 并淡入下一个同级 div

标签 javascript jquery

我有一组动态生成的 div,每个 div 都包含一个图像、文本和按钮。每个 div 都有一个 timeline-item 类,除了第一个之外,它们最初都是隐藏的。

我想要做的是,当单击下一个按钮时,它将淡出当前时间线项目 div 并平滑地淡入下一个。目前,它淡出第一个并淡入所有具有 timeline-item 类的 div。

$('.timeline-next').click(function(){
    $(".timeline-item").fadeOut().next(".timeline-item").fadeIn();
});
.hidden {
    display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="timeline">
    <div class="timeline-menu">
        <h2>Since 1861</h2>
        <div id="timeline-body" class="container">
            <div class="timeline-item visible">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> A RICH RACING HERITAGE</h3>
                    <p>
                        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut magna purus, efficitur
                        in dui vel, euismod mollis lacus. Aliquam ac erat non ligula ultricies commodo
                        aliquet nec eros. Donec efficitur, purus eget volutpat porta, nulla metus rhoncus
                        odio, sit amet cursus libero lectus vitae est. Curabitur cursus velit vitae purus
                        finibus sodales. Ut tincidunt vestibulum suscipit. Nunc auctor turpis in faucibus
                        pulvinar. Nunc non tincidunt magna. Praesent vitae commodo nibh. Nulla a nisl eget
                        ligula pharetra dignissim.
                    </p>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item hidden">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1862</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item hidden">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1863</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item hidden">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1864</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item hidden">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1865</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item hidden">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item hidden">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item hidden">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item hidden">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item hidden">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item hidden">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item hidden">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item hidden">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item hidden">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item hidden">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <p>tdasdsdsdasd</p>
                    <p>asdasdasdas</p>
                    <p>asdaasd</p>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
        </div>
    </div>
</div>

最佳答案

尝试使用完整的回调来实现顺序淡入淡出:

$('.timeline-next').click(function() {
  var $this = $(this).closest(".timeline-item");
    $this.fadeOut(400, function(){
      $this.next(".timeline-item").fadeIn(400); 
    });
});
.timeline-item {
  display: none;
}

.timeline-item.visible {
  display: block;
 }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="timeline">
    <div class="timeline-menu">
        <h2>Since 1861</h2>
        <div id="timeline-body" class="container">
            <div class="timeline-item visible">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> A RICH RACING HERITAGE</h3>
                    <p>
                        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut magna purus, efficitur
                        in dui vel, euismod mollis lacus. Aliquam ac erat non ligula ultricies commodo
                        aliquet nec eros. Donec efficitur, purus eget volutpat porta, nulla metus rhoncus
                        odio, sit amet cursus libero lectus vitae est. Curabitur cursus velit vitae purus
                        finibus sodales. Ut tincidunt vestibulum suscipit. Nunc auctor turpis in faucibus
                        pulvinar. Nunc non tincidunt magna. Praesent vitae commodo nibh. Nulla a nisl eget
                        ligula pharetra dignissim.
                    </p>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1862</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1863</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1864</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1865</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
            <div class="timeline-item">
                <div class="timeline-image">
                    <img src="http://musselburgh.dev/mediaLibrary/images/english/1015.jpg" />
                </div>
                <div class="timeline-text">
                    <h3> Since 1861</h3>
                    <p>tdasdsdsdasd</p>
                    <p>asdasdasdas</p>
                    <p>asdaasd</p>
                    <button class="timeline-next">NEXT</button>
                </div>
            </div>
        </div>
    </div>
</div>

编辑 css 类的改进很小

关于javascript - 根据类淡出 div 并淡入下一个同级 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46567577/

相关文章:

javascript - 如何删除 Javascript 数组中的方括号?

javascript - 单击链接后 AngularJS View 不会改变

javascript - PHP 数组作为 jQuery 自动完成的 JSON 响应

javascript - 如何使用 AngularJS 从 DOM 元素的值创建数组?

javascript - 将样式表注入(inject) Iframe(Facebook Like Box)

javascript - ie8_getElementById()

JavaScript 函数变量

javascript - 将for循环数据放入数组

jquery - 如何在不影响 Bootstrap 面板类的情况下将 <fieldset> 堆叠在一起?

javascript - kendodropdownlist 过滤具有字段的 json 响应