简体   繁体   English

淡出div并根据类别淡入下一个兄弟div

[英]Fade out div and fade in next sibling div based on class

I have a dynamically generated set of divs, each one contains an image, text and button. 我有一组动态生成的div,每个div包含一个图像,文本和按钮。 Each div has a class of timeline-item and they are all hidden initially apart from the first one. 每个div都有一类timeline-item ,除了第一个以外,它们最初都是隐藏的。

What I want to do is when the next button is clicked, it will fade out the current timeline-item div and fade in the next one smoothly. 我想做的是,当单击下一个按钮时,它将淡出当前时间轴项div,并平滑地淡入下一个。 Currently it fades out the first one and fades in all the div's with a class of timeline-item . 目前,它使用第一个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> 

You click event is applying the fadeout and fade in to all the nodes with a timeline-item class, you need to change the event handler to only apply the behavior in question to the parent of the clicked button. 您的click事件将淡出并应用到带有timeline-item类的所有节点上,您需要更改事件处理程序,以仅将相关行为应用于被单击按钮的父级。 You can achieve this by doing : 您可以这样做:

$('.timeline-next').click(function() {
    $(this).closest(".timeline-item").fadeOut().next(".timeline-item").removeClass('hidden').fadeIn();
});

try using the complete callback in order to have a sequential fade: 尝试使用complete回调以使顺序淡出:

 $('.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> 

Edit little improvement with css classes 用CSS类编辑一点改进

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM