Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Проблема с next() (https://javascript.ru/forum/jquery/50034-problema-s-next.html)

tanto39 08.09.2014 21:06

Проблема с next()
 
Вложений: 1
Пытаюсь сделать фотогалерею, проблема возникла при внедрении стрелочек вперед и назад, чтобы картинки листались. Для этого при клике по стрелке сравниваю атрибут сорс преьюшек и большой картинки, и если он совпадает, меняю src большой картинки на srs следующей превьюшки. Со стрелкой "назад" все нормально, но когда жму на стрелку для показа следующей картинки, сразу последняя картинка появляется. Архив со скриптом во вложении. ПАМАГИТЕ ПОСОНЫ!!!

код скрипта:
$(document).ready(function() {
	$(document).click( function(event){
		if( $(event.target).closest(".big-img").length ) 
		return;
		$(".modal").css("display","none");
		$(".fon-gallery").css("display","none");
			event.stopPropagation();
		});
		$('.box-img img').click(function(){
		$('.big-img img').attr('src', $(this).attr('src'));
		$('.modal').css("display","block");	
		$('.fon-gallery').css("display","block");

		return false;
		});
		
		
		$('.prev').click(function(){
			$('.box-img img').each(function(){
			if (($(this).attr('src')) == ($('.big-img img').attr('src'))){
				var a = $(this).parent().prev().children().attr('src');
			};
			$('.big-img img').attr('src', a);
			});	
		});
		
		
		//до этого все нормально, а тут и проблема
		$('.next').click(function(){
			$('.box-img img').each(function(){
			if (($(this).attr('src')) == ($('.big-img img').attr('src'))){
				var a = $(this).parent().next().children().attr('src');
			};
			$('.big-img img').attr('src', a);
			});	
		});
		
		
});


верстка:
Код:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Слайдшоу</title>
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="js/slaider.js"></script>
<link rel="stylesheet" href="css/style.css" type="text/css"/>
</head>

<body>
<div class="gallery">
        <div class="modal">
                <div class="gal-close">X</div>
                <div class="big-img">
                <img src="images/gallery/man1.jpg"/>
        <div class="prev">Назад</div>
        <div class="next">Вперед</div>
                </div>
        </div>
        <div class="box-img">
                <div class="img-cont"><img class="min-img" src="images/tachka1.jpg"/></div>
                <div class="img-cont"><img class="min-img" src="images/tachka2.jpg"/></div>
                <div class="img-cont"><img class="min-img" src="images/tachka3.jpg"/></div>
        </div>
</div>
<div class="fon-gallery"></div>
</body>
</html>


Стили CSS:
Код:

/*------gallery------*/
.modal{
        position: fixed;
        display: none;
        width: 700px;
        height: 530px;
        top: 50px;
        z-index: 1000;
}
.gal-close{
        width: 20px;
        height: 20px;
        float: right;
        position: relative;
        top: 26px;       
        cursor: pointer;
        font-weight: bold;
        color: #ffffff;
        background: #30E728;
        text-align: center;
}
.big-img, .big-img img{
        width: 700px;
        height: 500px;
}
.big-img img{
        border: 3px solid #7B090B;
}
.box-img img{
        float: left;
        width: 220px;
        height: 180px;
        margin: 20px;
        cursor: pointer;
}
.prev, .next{
        position: absolute;
        top: 120px;
        width: 77px;
        height: 100px;
        z-index: 100;
        cursor: pointer;
}
.prev{
        background: url(../images/left.png) top center no-repeat;
        left: 0px;
}
.next{
        right: 0px;
        background: url(../images/right.png) top center no-repeat;
}
.fon-gallery{
        background: #000000;
        width: 100%;
        height: 100%;
        opacity: 0.5;
        position: absolute;
        display: none;
        left: 0;
        top: 0;
}


Pavel M. 08.09.2014 21:39

Цитата:

Сообщение от tanto39
когда жму на стрелку для показа следующей картинки, сразу последняя картинка появляется

в блоке
$('.next').click...

после строки
$('.big-img img').attr('src', a);

можно добавить строку
if (a) { return false; }

это остановит цикл each, сразу после нахождения след. картинки и обновления '.big-img img'


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