Не удается переинициализировать слайдер
Есть слайдер, который должен переинициализироваться при каждом клике на кнопку.
вроде все делаю по ману, но слайдер не разрушается, а снова заполняется элементами при повторном клике. Как поправить?
$('#carousel').owlCarousel();
$(".button").click(function() {
$('#carousel').data('owlCarousel').destroy();
$('#carousel').owlCarousel({
items: 3,
pagination: false,
navigation: true,
navigationText: ["", ""],
});
$('.list li').each(function() {
if ($(".list li").hasClass("empty")) {
console.log("Modified");
} else {
$('#carousel').data('owlCarousel').addItem('<div>содержимое</div>');
};
});
$('#carousel').data('owlCarousel').reinit();
});
<ul class="list "> <!-- добавленное содержимое --> </ul> <div id="carousel" class="owl-carousel"> <!-- содержимое карусели --> <div class="empty"></div> </div> |
Цитата:
два варианта -- либо перед destroy удалить элементы через removeItem(); либо после destroy удалить содержимое #carousel зачем нужен сам destroy в вашем коде непонятно меняйте содержиое с помощью addItem и removeItem. |
Цитата:
$('#foot-carousel .li').each(function(){
$('#foot-carousel').data('owlCarousel').removeItem($(this));
});
или просто
$('#foot-carousel').data('owlCarousel').removeAll();
? |
Цитата:
первый вариант тоже для меня непонятен причём тут li ?
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
#carousel .item{
display: inline-block;
padding: 54px 0px;
margin: 5px;
color: #FFF;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
text-align: center;
width: 120px;
height: 100px;
background-color: #0000FF;
float: left;
}
.left{
text-align: left;
margin-bottom: 10px;
}
.left .btn {
display: block;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="http://owlgraphic.com/owlcarousel/owl-carousel/owl.carousel.js"></script>
<script>
$(function(){
$('#carousel').owlCarousel({
items: 3,
pagination: false,
navigation: true,
navigationText: ["", ""]
});
var i = 0; //для теста
$(".button").click(function() {
$('#carousel').find('>').remove()
$('.list li').each(function() {
if ($(".list li").hasClass("empty")) {
console.log("Modified");
} else {
$('#carousel').data('owlCarousel').addItem('<div class=item >содержимое '+(i++)+' </div>');
};
});
});
});
</script>
</head>
<body> <input name="" type="button" value="click" class="button">
<ul class="list ">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<!-- добавленное содержимое -->
</ul>
<div id="carousel" class="owl-carousel">
<!-- содержимое карусели -->
</div>
</body>
</html>
|
рони, все супер! Спасибо большое!
Единственное, что еще нужно поправить это создание событие на отслеживании добавления li, а не на клике по кнопке, т.к. все действия происходят быстрее заполнения самого списка. Пытаюсь проделать такой трюк, но не проходит..
$('.list').on('add', 'li', function(){...}
Цитата:
|
Цитата:
|
Цитата:
|
ligisayan, :blink:
|
| Часовой пояс GMT +3, время: 03:48. |