Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Почему не правильно считает номера слайдов в карусели owl carousel 2? (https://javascript.ru/forum/jquery/62633-pochemu-ne-pravilno-schitaet-nomera-slajjdov-v-karuseli-owl-carousel-2-a.html)

ligisayan 21.04.2016 13:17

Почему не правильно считает номера слайдов в карусели owl carousel 2?
 
Приветствую! Есть Owl Carousel 2 в которой хочу получать номер текущего и количество слайдов в целом, но проблема в том, что после перехода с от последнего слайда к первому не происходит обнуление в подсчете и отображает номера 8, а затем 2,3 и т.д. Почему так?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://owlcarousel.owlgraphic.com/assets/owlcarousel/owl.carousel.js"></script>
<link rel="stylesheet" href="http://owlcarousel.owlgraphic.com/assets/owlcarousel/assets/owl.carousel.min.css">
<link rel="stylesheet" href="http://owlcarousel.owlgraphic.com/assets/owlcarousel/assets/owl.theme.default.min.css">
<div class="owl-carousel">
  <div class="item">
    <h4></h4>
  </div>
  <div class="item">
    <h4></h4>
  </div>
  <div class="item">
    <h4></h4>
  </div>
  <div class="item">
    <h4></h4>
  </div>
  <div class="item">
    <h4></h4>
  </div>
  <div class="item">
    <h4></h4>
  </div>
  <div class="item">
    <h4></h4>
  </div>
</div>
<p class='counter'>№1 из N</p>

var owl = $('.owl-carousel');
owl.owlCarousel({
  loop: true,
  items: 1,
  margin: 10,
  nav: true,
  onInitialized: function(e) {
    $('.counter').text('1 из ' + this.items().length)
    console.log();
  }
});
owl.on('changed.owl.carousel', function(e) {
  $('.counter').text(e.item.index - 1 + ' из ' + e.item.count)
});

Код:

.owl-carousel .item {
  height: 10rem;
  background: #4DC7A0;
  padding: 1rem;
}

ссылка на фидл

рони 21.04.2016 13:38

ligisayan,
потому что обычно в слайдере на несколько слайдов больше чем изначально было.

рони 21.04.2016 13:41

ligisayan,
было 0,1,2,3,4,5,6 стало 5,6,0,1,2,3,4,5,6,0,1

ligisayan 21.04.2016 14:57

да, спасибо рони - это потому, что зацикленность в карусели присутствует. а как это дело можно поправить, чтобы выводились правильные цифры?

рони 21.04.2016 15:18

ligisayan,
owl.on('changed.owl.carousel', function(e) {
  $('.counter').text([6,7,1,2,3,4,5,6,7,1,2][e.item.index]  + ' из ' + e.item.count)
});

ligisayan 21.04.2016 15:29

рони, спасибо большое! а есть ли возможно как-то универсализировать в общем случае для различного количества слайдов?
т.е.
owl.on('changed.owl.carousel', function(e) {
  $('.counter').text([(e.item.count-1),e.item.count, последовательность от 1 до последнего слайда,1,2][e.item.index]  + ' из ' + e.item.count)
});

осталось понять как получить эту последовательность последовательность от 1 до последнего слайда

рони 21.04.2016 15:48

ligisayan,
owl.on('changed.owl.carousel', function(e) {
  $('.counter').text(++e.page.index  + ' из ' + e.item.count)
});

ligisayan 21.04.2016 16:48

Отлично, рони, супер! единственное, что во всплывающем окне или фрейме не сработает - ?

рони 21.04.2016 16:51

Цитата:

Сообщение от ligisayan
что во всплывающем окне или фрейме не сработает

не понимаю о чём вы

ligisayan 21.04.2016 17:44

Цитата:

Сообщение от рони (Сообщение 414637)
не понимаю о чём вы

если вот тут
http://boats.likemedia.by/product-category/rasprodazha
на товаре ТАЙМЕНЬ N-270РС ТР кликнуть на лупу, и пролистать товары вправо-влево, то в листалке товаров отображает порядковый номер 0, хотя тут все складно работает
фидл

рони 21.04.2016 18:06

ligisayan,
должно быть что-то типа такого
$.mad_woocommerce_mod.qvCarousel = function () {

		var qvCarousel = $('.qv-carousel');

		if (qvCarousel.length) {
			qvCarousel.each(function () {

			 var owl = $(this).owlCarousel({
					theme : "owl-qv-carousel-theme",
					items:1,

					//Autoplay
                    dots: false,
					autoPlay : false,
                    loop: true,
					slideSpeed : 1000,
					autoHeight : false,
					stopOnHover : true,

					// Navigation
					nav : true,
                    navText: ["",""],
					rewindNav : true,
					scrollPerPage : false,

					//Pagination
					pagination : false,
					paginationNumbers: false,

					onInitialized: function(e) {
						$('.gallery-photoes').text('фото 1 из ' + this.items().length);
					},
					afterInit: function () {
						$.mad_woocommerce_mod.product_preview.call(this);
					}
				});
				owl.on('changed.owl.carousel', function(e) {
				  $('.gallery-photoes').text('фото ' + ++e.page.index + ' из ' + e.item.count);
				  console.log(e.page.index);
				});
			});
		}

	}

ligisayan 21.04.2016 22:01

рони отличная попытка!, перенес код 1 в 1, но, к сожалению, все тоже самое...

рони 21.04.2016 22:54

ligisayan,
тогда так :)
$.mad_woocommerce_mod.qvCarousel = function () {

		var qvCarousel = $('.qv-carousel');

		if (qvCarousel.length) {
			qvCarousel.each(function () {

			 var owl = $(this).owlCarousel({
					theme : "owl-qv-carousel-theme",
					items:1,

					//Autoplay
                    dots: false,
					autoPlay : false,
                    loop: true,
					slideSpeed : 1000,
					autoHeight : false,
					stopOnHover : true,

					// Navigation
					nav : true,
                    navText: ["",""],
					rewindNav : true,
					scrollPerPage : false,

					//Pagination
					pagination : false,
					paginationNumbers: false,

					onInitialized: function(e) {
						$('.gallery-photoes').text('фото 1 из ' + this.items().length);
					},
					afterInit: function () {
						$.mad_woocommerce_mod.product_preview.call(this);
					}
});
owl.on("changed.owl.carousel", function(a) {
    var b = --a.item.index,
    a = a.item.count;
    $(".gallery-photoes").text('фото ' +(1 > b ? b + a : b > a  ?  b - a : b) + " из " + a)
});

			});
		}

	}

ligisayan 22.04.2016 10:22

оу, супер, рони, - вы гений! вот оказывается как циклы на js можно строить!


Часовой пояс GMT +3, время: 15:44.