我正在尝试在slide-content
的标题div中动态添加一个类slide-buttons
和Bootstrap Carousel
。我希望我的代码只有在类animate
的父div添加了类item
时才添加类active
。 (仅当项目滑入时才会添加班级active
。)。这是Carousel的基本HTML。
<div class="carousel-inner" role="listbox">
<!-- Item 1 -->
<div class="item active">
<img src="..." alt="...">
<div class="carousel-caption">
<div class="slide-content>
...
</div>
<div class="slider-buttons">
...
</div>
</div>
</div>
<!-- /Item 1 -->
<!-- Item 2 -->
<div class="item">
<img src="..." alt="...">
<div class="carousel-caption">
<div class="slide-content>
...
</div>
<div class="slider-buttons">
...
</div>
</div>
</div>
<!-- /Item 2 -->
...
</div>
而且,这就是我的尝试。
$item = $('.carousel-inner > .item');
$( $('.carousel-inner > .item') ).each(function() {
if ( this.hasClass('active') ) {
$('.carousel-caption > .slide-content, .carousel-caption > .slider-buttons').addClass('animated');
} else {
$('.carousel-caption > .slide-content, .carousel-caption > .slider-buttons').removeClass('animated');
}
});
现在,当我删除jQuery的each
函数时,当任何项获得类animated
时,它会将类active
添加到所有元素。此外,它根本不会删除该类(因为类active
存在,尽管父div。)。而且,当我添加each
函数时,它根本不起作用。
请帮忙。
答案 0 :(得分:1)
您可以使用适当的选择器遍历元素
var inner = $('.carousel-inner');
//traverse not active item then find the buttons and remove the animated class
inner.find('> .item:not(.active) .carousel-caption').children('.slide-content .slider-buttons').removeClass('animated');
//traverse active item then find the buttons and add the animated class
inner.find('> .item.active .carousel-caption').children('.slide-content .slider-buttons').addClass('animated');
答案 1 :(得分:0)
我的猜测:
$('.carousel-inner :not(.active)').find('.slide-content,.slider-buttons').removeClass('animated');
$('.carousel-inner .active').find('.slide-content,.slider-buttons').addClass('animated');
顺便说一下,你忘记了结束双引号:
<div class="slide-content>
应该改为:
<div class="slide-content">