如何正确获取活动类的索引号

Posted

技术标签:

【中文标题】如何正确获取活动类的索引号【英文标题】:How to get the index number of active class properly 【发布时间】:2021-12-13 23:00:04 【问题描述】:

我正在制作这个演示。为什么我无法正确获取.carousel-item.active的当前索引号?

正如您在显示第二张幻灯片时看到的那样,我仍在获取第一张幻灯片的索引,依此类推。

var totalItems = $('.carousel-item').length;
var currentIndex = $('.carousel-item.active').index() + 1;


var myCarousel = document.getElementById('carouselExampleIndicators')
myCarousel.addEventListener('slide.bs.carousel', function() 
  currentIndex = $('.carousel-item.active').index() + 1;
  $('#slide').text('' + currentIndex + ' / ' + totalItems + '');
);
.carousel-item img 
  max-height: 200px !important;

.carousel-indicators

top:16px !important;
  
<!doctype html>
<html lang="en">

<head>
  <!-- Required meta tags -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <!-- Bootstrap CSS -->
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">

  <title>Hello, world!</title>
</head>

<body>
  <div class="container">
    <button type="button" class="btn btn-warning"><span id="slide">1 / 3</span></button>
    <div id="carouselExampleIndicators" class="carousel slide" data-bs-ride="carousel">
      <div class="carousel-indicators">
        <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
        <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
        <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
      </div>
      <div class="carousel-inner">
        <div class="carousel-item active">
          <img src="https://placeimg.com/300/280/tech" class="d-block w-100" >
        </div>
        <div class="carousel-item">
          <img src="https://placeimg.com/300/280/people" class="d-block w-100" >
        </div>
        <div class="carousel-item">
          <img src="https://placeimg.com/300/280/Place" class="d-block w-100" >
        </div>
      </div>
      <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
      <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
    </div>

    <script src="https://code.jquery.com/jquery-3.1.0.js"></script>


    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.10.2/dist/umd/popper.min.js" integrity="sha384-7+zCNj/IqJ95wo16oMtfsKbZ9ccEh31eOz1HGyDuCQ6wgnyJNSYdrPa03rtR1zdB" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js" integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" crossorigin="anonymous"></script>

</body>

</html>

【问题讨论】:

对于您的活动,请尝试使用'slid.bs.carousel' 而不是'slide.bs.carousel'slide 立即触发,而 slid 在转换完成后触发 感谢这解决了问题 好的,那我会回答的 【参考方案1】:

对于您的活动,请尝试使用 'slid.bs.carousel' 而不是 'slide.bs.carousel'slide 立即触发,而slid 在转换完成后触发

var totalItems = $('.carousel-item').length;
var currentIndex = $('.carousel-item.active').index() + 1;
var myCarousel = document.getElementById('carouselExampleIndicators')
myCarousel.addEventListener('slid.bs.carousel', function() 
  currentIndex = $('.carousel-item.active').index() + 1;
  $('#slide').text('' + currentIndex + ' / ' + totalItems + '');
);
.carousel-item img 
  max-height: 200px !important;


.carousel-indicators 
  top: 16px !important;
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">


<div class="container">
  <button type="button" class="btn btn-warning"><span id="slide">1 / 3</span></button>
  <div id="carouselExampleIndicators" class="carousel slide" data-bs-ride="carousel">
    <div class="carousel-indicators">
      <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
      <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
      <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
    </div>
    <div class="carousel-inner">
      <div class="carousel-item active">
        <img src="https://placeimg.com/300/280/tech" class="d-block w-100" >
      </div>
      <div class="carousel-item">
        <img src="https://placeimg.com/300/280/people" class="d-block w-100" >
      </div>
      <div class="carousel-item">
        <img src="https://placeimg.com/300/280/Place" class="d-block w-100" >
      </div>
    </div>
    <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
    <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
  </div>

  <script src="https://code.jquery.com/jquery-3.1.0.js"></script>


  <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.10.2/dist/umd/popper.min.js" integrity="sha384-7+zCNj/IqJ95wo16oMtfsKbZ9ccEh31eOz1HGyDuCQ6wgnyJNSYdrPa03rtR1zdB" crossorigin="anonymous"></script>
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js" integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" crossorigin="anonymous"></script>

【讨论】:

以上是关于如何正确获取活动类的索引号的主要内容,如果未能解决你的问题,请参考以下文章

如何从 VBE 加载项中获取正确的活动应用程序?

如何从活动 CUDA 设备获取属性?

如何在选项卡面板中获取活动选项卡索引?

如何从片段获取数据到活动? [复制]

csharp 获取第一个活动对象索引

如何从片段获取数据到另一个活动? (不是容器活动)[重复]