Owl Carousel on change not working

Arthur picture Arthur · Aug 30, 2016 · Viewed 16.6k times · Source

I can't seem to get the owl carousel onchange function to fire off. Here's a snippet of the relevant code, any ideas?

HTML:

<div id="my-carousel" class="owl-carousel owl-theme">
    <div class="owl-item"><img alt="" src="pic1"/></div>
    <div class="owl-item"><img alt="" src="pic2" /></div>
</div>

JS:

var my = $('#my-carousel');
my.owlCarousel({
    autoPlay: true,
    autoplaySpeed: 4000,
    loop: true,
    slideSpeed: 300,
    paginationSpeed: 400,
    items: 1,
    margin: 2
});
my.on('changed.owl.carousel', function(e) {
    console.log("test");
});

Answer

Dekel picture Dekel · Aug 30, 2016

The autoplay should be all lower case, and also note that there is not slideSpeed and paginationSpeed options.

Here is a working version:

var owl;
$(document).ready(function(){
  owl = $(".owl-carousel").owlCarousel({
    autoplay: true,
    autoplaySpeed: 300,
    loop: true,
    navSpeed: 300,
    items: 1,
    margin: 2
  });
  owl.on('changed.owl.carousel', function(e) {
    console.log("test");
  });
});
body {
  margin: 0;
  padding: 0;
}

.owl-carousel .item {
  height: 120px;
  background: #4DC7A0;
  padding: 1rem;
  list-style: none;
  margin: 10px;
  text-align: center;
  color: white;
  font-size: 20px;
  line-height: 120px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.1.6/assets/owl.carousel.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.1.6/assets/owl.theme.default.min.css">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.1.6/owl.carousel.min.js"></script>
<!-- Set up your HTML -->

<div class="owl-carousel">
  <div class="item"> slide1 </div>
  <div class="item"> slide2 </div>
  <div class="item"> slide3 </div>
  <div class="item"> slide4 </div>
  <div class="item"> slide5 </div>
  <div class="item"> slide6 </div>
  <div class="item"> slide7 </div>
  <div class="item"> slide8 </div>
  <div class="item"> slide9 </div>
</div>