Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.08.2014, 20:57
Новичок на форуме
Отправить личное сообщение для Designik Посмотреть профиль Найти все сообщения от Designik
 
Регистрация: 02.08.2014
Сообщений: 2

Настройка прокрутки слайдов Jquery
$(function () {
	var slideSpeed = 700;
	var phase = 2000;
	var elWrap = $('.BRAVEslider'),
		el =  elWrap.find('li'),
		indexImg= 1,
		indexMax= el.length;		
		
	function change () {
		el.fadeOut(slideSpeed);
		el.filter(':nth-child('+indexImg+')').fadeIn(slideSpeed);
	}
		
	function autoChange () {	
		indexImg++;
		if(indexImg> indexMax) {
			indexImg=1;
		}			
		change ();
	}
	
	var interval = setInterval(autoChange, phase);

	elWrap.mouseover(function() {
		clearInterval(interval);
	});
	
	elWrap.mouseout(function() {
		interval = setInterval(autoChange, phase);
	});
	
});

Все нормально работает, прокручивает слайды, вложенные в элемент списка li. Но если оставить страницу со слайдером открытой, а затем через некоторое время вернуться на нее, то слайдер начинает слайды быстро переключать без задержки. Помогите пожалуйста, я еще только учусь.
Ответить с цитированием
  #2 (permalink)  
Старый 02.08.2014, 21:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Автослайдер с остановкой при наведении
Designik,
перепишите код на window.setTimeout вместо setInterval
или такой вариант ...
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
 .BRAVEslider li:nth-child(n+2){
   display: none;
 }

  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function () {
     var slideSpeed = 700;
     var phase = 2E3;
     var elWrap = $(".BRAVEslider"),
         el = elWrap.find("li"),
         indexImg = 0,
         indexMax = el.length;

     function change() {
         el.eq(indexImg).delay(phase).fadeOut(slideSpeed, function () {
             indexImg = ++indexImg % indexMax;
             el.eq(indexImg).fadeIn(slideSpeed, change)
         })
     }
     elWrap.mouseenter(function () {
         el.eq(indexImg).stop(true)
     });
     elWrap.mouseleave(function () {
         change()
     });
     change()
 });
</script>
</head>

<body>
    <ul class="BRAVEslider">
      <li>1</li><li>2</li><li>3</li><li>4</li>
    </ul>
</body>

</html>

Последний раз редактировалось рони, 02.08.2014 в 21:57.
Ответить с цитированием
  #3 (permalink)  
Старый 02.08.2014, 22:15
Новичок на форуме
Отправить личное сообщение для Designik Посмотреть профиль Найти все сообщения от Designik
 
Регистрация: 02.08.2014
Сообщений: 2

спасибо)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Настройка кнопок для прокрутки контента Silence Общие вопросы Javascript 4 09.07.2014 00:42
Проблема с jQuery плагином бесконечной прокрутки страницы Arhey jQuery 0 13.04.2013 01:13
Изменить эффект смены слайдов jquery Ranetka Работа 2 20.02.2013 08:58
Настройка текста с помощью JQuery web32 jQuery 6 28.06.2012 11:01
jquery accordion как избавиться от прокрутки страницы. cesar5 Events/DOM/Window 0 24.01.2012 15:52