Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Дважды срабатывает функция в слайдере (https://javascript.ru/forum/events/30619-dvazhdy-srabatyvaet-funkciya-v-slajjdere.html)

krueger 10.08.2012 04:04

Дважды срабатывает функция в слайдере
 
Доброго времени суток.
Написал скрипт слайдера на jQuery.
Структура: список заголовков, под ними сам слайдер. При клике на заголовок - смена слайда. Также сделал автоплей + пауза при ховере. Проблема в том, что иногда функция автоплей срабатывает дважды. В чем ошибка?

$(document).ready(function(){
	currentslide = 1;

	$(".newslidernav li").click(function(){
		var position = $(this).position();
		var slideIndex = $(this).index() + 1;
		currentslide = slideIndex;
		showslide(slideIndex, position);
	});
	
	function showslide(slideIndex, position){
		$(".newslidermarker").animate(
			{left: position.left+20},
			{
				duration: 500, easing: 'swing', complete: function() {
					$(".newslidernav li.act").removeClass("act");
					$(".newslidernav li:nth-child("+slideIndex+")").addClass("act");
				}
			}
		);
		$("#newslider li.act").css({zIndex: 0});
		$("#newslider li:nth-child("+slideIndex+")").css({opacity: 0, display: "block", zIndex: 50}).animate(
			{opacity: 1},
			{
				duration: 500, easing: 'swing', complete: function() {
					$("#newslider li.act").removeClass("act").css({opacity: 0, display: "none"});
					$("#newslider li:nth-child("+slideIndex+")").addClass("act").css({opacity: 1, display: "block"});
				}
			}
		);
	}
	
	$("#newslider li:first-child").addClass("act").css({display: "block"});
	$(".newslider li:first-child").addClass("act");
	

	letsgo = setInterval(function(){autoplay();},5000);
	
	$(".newslider").hover(function(){
		letsgo = clearInterval(letsgo);
	},function(){
		letsgo = setInterval(function(){autoplay();},5000);
	});
	
	function autoplay(){
		var countitems = $(".newslidernav li").length;
		var nextslide = currentslide + 1;
		if(nextslide>countitems){currentslide=0; nextslide=1;}

		$('.newslidernav li:nth-child('+nextslide+')').click();
	}
});


Зарание благодарен за помощь, советы.


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