Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Переход на следующий слайд (https://javascript.ru/forum/dom-window/70086-perekhod-na-sleduyushhijj-slajjd.html)

Янковиц 09.08.2017 09:56

Переход на следующий слайд
 
Добрый день, есть верстка для галереи:
<div class="slides">
  <div class="slide 1th"></div>
  <div class="slide 2th"></div>
  <div class="slide 3th"></div>
</div>
<div class="nav">
  <div class="btn-group">
    <div class="btn active"></div>
    <div class="btn"></div>
    <div class="btn"></div>
  </div>
</div>


Как сделать автоматический запуск слайдов?
Делаю так - эмулирую нажатие на кнопку навигации:
setInterval(function(){
	jQuery('.btn').trigger('click');
}, 6000);

Как сделать эмуляцию клика на следующий пункт навигации? Спасибо.

ksa 09.08.2017 10:26

Цитата:

Сообщение от Янковиц
Как сделать эмуляцию клика на следующий пункт навигации?

Если я правильно понял, "текущая" кнопка навигации та, что с классом active?
Если так, то:
- ищем кнопку с классом active
- берем следующую за ней и кликаем
- если следующей нет, берем первую и кликаем на ней

Янковиц 09.08.2017 10:30

Цитата:

Сообщение от ksa (Сообщение 461052)
Если я правильно понял, "текущая" кнопка навигации та, что с классом active?

Да, все верно. Только как это сделать?

Вернее второй и третий пункты?

Янковиц 09.08.2017 10:46

Дохожу до последнего, и останавливается:(
setInterval(function(){
	var elem = jQuery('.btn-group .active').next();
	if ( jQuery(elem).is(':last') ) {
		jQuery('.btn-group .btn').trigger('click');
	} else {
		jQuery(elem).trigger('click');
	}
}, 6000);

j0hnik 09.08.2017 10:48

var i = 0
	setInterval(function(){
	$('.btn').eq(i).trigger('click');
	i++;
	if(i==2) i = 0;
}, 6000);


как то так

Янковиц 09.08.2017 10:49

Дело в том, что заведомо неизвестно, сколько будет слайдов.

j0hnik 09.08.2017 10:50

var i = 0
	setInterval(function(){
	$('.btn').eq(i).trigger('click');
	i++;
	if(i== $('.slide').length-1) i = 0;
}, 6000);

тогда так

Янковиц 09.08.2017 10:55

Первый слайд меняется только со второй попытки. Обновляет у него класс active, и только потом переходит на второй.

ksa 09.08.2017 10:56

Цитата:

Сообщение от Янковиц
Дохожу до последнего, и останавливается
jQuery('.btn-group .btn').trigger('click');

Замени на
jQuery('.btn-group .btn:first-child').trigger('click');

Янковиц 09.08.2017 10:56

Кроме того, у меня пять слайдов, а с 4 прыгает на первую.


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