Reputation: 83
I need help on data attribute for Owl-Carousel.
As you can see on my sample, on slide 1 and 3 there is attribute on each item. Is working only event is trigger but not working on load for slide 1 (first slide).
Thank you in advance.
Sample in Codepen https://codepen.io/jafaris-mustafa/pen/XWJwjaZ
$('.owl-carousel').owlCarousel({
autoplay: true,
loop: true,
margin: 10,
autoHeight: true,
autoplayTimeout: 10000,
smartSpeed: 800,
nav: true,
items: 1,
});
var owl = $('.owl-carousel');
owl.on('changed.owl.carousel', function(property) {
var current = property.item.index;
var src = $(property.target).find(".owl-item").eq(current).find(".item").attr('setBgClr');
//console.log('Image current is ' + src);
if ($(property.target).find(".owl-item").eq(current).find(".item").is('[setBgClr]')) {
$(".heroes-wrap").css("background-color", src);
} else {
$(".heroes-wrap").css("background-color", "white");
}
});
body {
font-family: Arial, Helvetica, sans-serif;
}
.heroes-wrap {
margin: 2em;
padding: 1em;
}
<link href="https://owlcarousel2.github.io/OwlCarousel2/assets/owlcarousel/assets/owl.theme.default.min.css" rel="stylesheet" />
<link href="https://owlcarousel2.github.io/OwlCarousel2/assets/owlcarousel/assets/owl.carousel.min.css" rel="stylesheet" />
<div class="heroes-wrap">
<div class="owl-carousel owlCarousel-item">
<div class="item" setBgClr="red">
<div class="heroes-txt">
<h2>Slide 1</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</p>
</div>
</div>
<div class="item">
<div class="heroes-txt">
<h2>Slide 2</h2>
<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
</div>
<div class="item" setBgClr="#4CAF50">
<div class="heroes-txt">
<h2>Slide 3</h2>
<p>Orci nulla pellentesque dignissim enim. Nunc non blandit massa enim. At quis risus sed vulputate odio ut. Vulputate odio ut enim blandit volutpat maecenas. Massa id neque aliquam vestibulum morbi blandit.</p>
</div>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://owlcarousel2.github.io/OwlCarousel2/assets/owlcarousel/owl.carousel.js"></script>
Upvotes: 0
Views: 500
Reputation: 6130
There is an event initialized.owl.carousel
, which will trigger on carousel initialization. Notice that initialize.owl.carousel
and initialized.owl.carousel
events must be attached before Owl Carousel initialization.
Make use of these events to change color on initial load, check the updated fiddle.
var owl = $('.owl-carousel');
owl.on('initialized.owl.carousel', function(property){
var current = property.item.index;
var src = $(property.target).find(".owl-item").eq(current).find(".item").attr('setBgClr');
if($(property.target).find(".owl-item").eq(current).find(".item").is('[setBgClr]')) {
$(".heroes-wrap").css("background-color", src);
} else {
$(".heroes-wrap").css("background-color", "white");
}
});
$('.owl-carousel').owlCarousel({
autoplay: true,
loop: true,
margin: 10,
autoHeight: true,
autoplayTimeout: 10000,
smartSpeed: 800,
nav: true,
items: 1,
});
owl.on('changed.owl.carousel',function(property){
var current = property.item.index;
var src = $(property.target).find(".owl-item").eq(current).find(".item").attr('setBgClr');
if($(property.target).find(".owl-item").eq(current).find(".item").is('[setBgClr]')) {
$(".heroes-wrap").css("background-color", src);
} else {
$(".heroes-wrap").css("background-color", "white");
}
});
body {font-family:Arial, Helvetica, sans-serif;}
.heroes-wrap {margin:2em; padding:1em;}
<link href="https://owlcarousel2.github.io/OwlCarousel2/assets/owlcarousel/assets/owl.theme.default.min.css" rel="stylesheet"/>
<link href="https://owlcarousel2.github.io/OwlCarousel2/assets/owlcarousel/assets/owl.carousel.min.css" rel="stylesheet"/>
<div class="heroes-wrap">
<div class="owl-carousel owlCarousel-item">
<div class="item" setBgClr="red">
<div class="heroes-txt">
<h2>Slide 1</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</p>
</div>
</div>
<div class="item">
<div class="heroes-txt">
<h2>Slide 2</h2>
<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
</div>
</div>
<div class="item" setBgClr="#4CAF50">
<div class="heroes-txt">
<h2>Slide 3</h2>
<p>Orci nulla pellentesque dignissim enim. Nunc non blandit massa enim. At quis risus sed vulputate odio ut. Vulputate odio ut enim blandit volutpat maecenas. Massa id neque aliquam vestibulum morbi blandit.</p>
</div>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://owlcarousel2.github.io/OwlCarousel2/assets/owlcarousel/owl.carousel.js"></script>
Upvotes: 1