0

I have data-delay attribute for each item and I want to delay my item for example if my first item has data-delay="10" then delay my item 10 second or if my second item attribute is 20 than delay my item 20 second is that possible ?

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet" />

<div id="carousel-example" class="carousel slide" data-ride="carousel">
  <ol class="carousel-indicators">
    <li data-target="#carousel-example" data-slide-to="0" class="active"></li>
    <li data-target="#carousel-example" data-slide-to="1"></li>
    <li data-target="#carousel-example" data-slide-to="2"></li>
  </ol>

  <div class="carousel-inner">
    <div class="item active" data-delay="10">
      <a href="#"><img src="http://placekitten.com/1600/600" /></a>
      <div class="carousel-caption">
        <h3>Meow</h3>
        <p>Just Kitten Around</p>
      </div>
    </div>
    <div class="item" data-delay="5">
      <a href="#"><img src="http://placekitten.com/1600/600" /></a>
      <div class="carousel-caption">
        <h3>Meow</h3>
        <p>Just Kitten Around</p>
      </div>
    </div>
    <div class="item" data-delay="23">
      <a href="#"><img src="http://placekitten.com/1600/600" /></a>
      <div class="carousel-caption">
        <h3>Meow</h3>
        <p>Just Kitten Around</p>
      </div>
    </div>
  </div>

  <a class="left carousel-control" href="#carousel-example" data-slide="prev">
    <span class="glyphicon glyphicon-chevron-left"></span>
  </a>
  <a class="right carousel-control" href="#carousel-example" data-slide="next">
    <span class="glyphicon glyphicon-chevron-right"></span>
  </a>
</div>

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
ani_css
  • 2,118
  • 3
  • 30
  • 73

1 Answers1

3

If you change the interval on every slide, you can obtain this functionality.

https://jsfiddle.net/9nkLousp/1/

function slide() {
  $(this).carousel({
    interval: $(this).find(".item.active").data("delay") * 1000
  });
}

slide.bind($('#carousel'))();
$('#carousel').on('slid.bs.carousel', slide)

Additionally, I added a carousel id:

<div id="carousel" class="carousel slide" data-ride="carousel">
Neil
  • 14,063
  • 3
  • 30
  • 51