Bootstrap: заменить "активный" класс на другой "li" - текстовая карусель - PullRequest
1 голос
/ 13 февраля 2020

Так что я пытаюсь сделать текстовую карусель с текстовыми индикаторами. Моя текстовая карусель меняет идеально «активный» класс на предмет на другой. Но я не могу заставить свой индикатор ("nav") менять с каруселью его активный класс на другой с jQuery.

Вот мой HTML

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha384-nvAa0+6Qg9clwYCGGPpDQLVpLNn0fRaROjHqs13t4Ggj3Ez50XnGQqc/r8MhnRDZ" crossorigin="anonymous"></script>

<div id="myCarousel" class="carousel slide vertical" data-ride="carousel" data-interval="3000">
    <!-- Wrapper for slides -->
    <div class="carousel-inner">
        <div class="item active">
            <div class="row">
                <div data="0" class="col-md-12">
                    <p>001</p>
                    <h2>TEST</h2>
                </div>
            </div>
        </div>
        <div class="item">
            <div class="row">
                <div data="1" class="col-md-12">
                    <p>002</p>
                    <h2>TEST</h2>
                </div>
            </div>
        </div>
        <div class="item">
            <div class="row">
                <div class="col-md-12">
                    <p>003</p>
                    <h2>TEST</h2>
                </div>
            </div>
        </div>
    </div>
</div>

<ul class="carousel-nav">
    <li data-target="#myCarousel" data-slide-to="0" class="active"><a href="#"><span style="letter-spacing:0.0px;">001</span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size:20px;">•</span>&nbsp;&nbsp;&nbsp;TEST</a></li>
    <li data-target="#myCarousel" data-slide-to="1"><a href="#"><span style="letter-spacing:0.4px;">002</span>&nbsp;&nbsp;&nbsp;<span style="font-size:20px;">•</span>&nbsp;&nbsp;&nbsp;TEST</a></li>
    <li data-target="#myCarousel" data-slide-to="2"><a href="#"><span style="letter-spacing:0.4px;">003</span>&nbsp;&nbsp;&nbsp;<span style="font-size:20px;">•</span>&nbsp;&nbsp;&nbsp;TEST</a></li>
</ul>

Вот мой jQuery

var $carousel = $('#myCarousel');
$carousel.carousel();
var handled=false;
var itemclicked="";
$carousel.bind('slide.bs.carousel', function (e) {
    var current=$(e.target).find('.item.active');
    var indx=$(current).index();
    if((indx+2)>$('.carousel-nav li').length)
        indx=-1

     if(!handled)
     {
        $('.carousel-nav li').removeClass('active')
        $('.carousel-nav li:nth-child('+(indx+2)+')').addClass('active');

     }
     else
     {
        handled=!handled;
     }

});

$(".carousel-nav li").on('click',function(){
   $(this).addClass('active').siblings().removeClass('active');
   handled=true;
});
...