我正在尝试创建一个投资组合网站,该网站在同一页面上包含多个图像滑块。我让HTML,CSS和jQuery适用于单个滑块,但是当我添加另一个具有相同类的滑块时,事情就变得很时髦了。

我的问题:如何使左右箭头仅针对它们所连接的幻灯片?



可能的修复:

-是否需要重新组织HTML,使幻灯片与箭头同级?不过,它们已经包含在同一个“投资组合项目” div中。

-我需要在jQuery中使用“ this”和/或“ each”吗?我试过在不同位置使用“ this”和“ each”选择器,但是没有运气。我是新手,所以我可以一直在错误地使用它们。



附加的代码有效,但是箭头移动了文档中的所有图像,而不仅仅是它们各自滑块上的图像。

感谢您的帮助!!

瑞安



var main = function(){

	$('.slide:first-child').fadeIn(600).addClass('active-slide');

	//right arrow!

    $('.portfolio-item .right-arrow').click( function(){
        var currentSlide=$('.active-slide');
        var nextSlide=currentSlide.next();

        if(nextSlide.length === 0) {
            nextSlide=$('.slide:first-child');
        }

        currentSlide.fadeOut(600).removeClass('active-slide');
        nextSlide.fadeIn(600).addClass('active-slide');

    });

	//left arrow!

    $('.portfolio-item .left-arrow').click( function(){
        var currentSlide=$('.active-slide');
        var prevSlide = currentSlide.prev();

        if(prevSlide.length === 0) {
           prevSlide=$('.slide:last-child');
        }

        currentSlide.fadeOut(600).removeClass('active-slide');
        prevSlide.fadeIn(600).addClass('active-slide');


	});

}

$(document).ready(main);

@charset "UTF-8";
/* CSS Document */

.slider-container {
	display: block;
	position:relative;
	width: 100%;
	max-width:600px;
	background-color: black;
	margin: 0% 0% 1% 0%;
	overflow:hidden;
	float:left;
}

.slider {
	position:relative;
	padding-top: 45%;
	z-index:0;
}

ul.slides {
	z-index:1;
	list-style-type:disc;
	display:block;
	position:absolute;
	padding:0;
	margin:0;
	top:0;
	left:0;
	width:100%;
	height:100%;
}

.active-slide {
	display:block;
	margin:0 auto;
}

.slide {
	display:none;
	position:absolute;
	width:100%;
	height:100%;
	transition: all .2s ease-in-out;
   -moz-transition: all .2s ease-in-out;
   -webkit-transition: all .2s ease-in-out;
   overflow:hidden;
}

.slide img{
	margin:0;
	position:absolute;
	width:100%;
	z-index:2;
	left:0;
}

.arrow {
	position:absolute;
	top:42%;
	width:5%;
	opacity: 0.7;
	transition: all .2s ease-in-out;
   -moz-transition: all .2s ease-in-out;
   -webkit-transition: all .2s ease-in-out;
   z-index:3;
}

.left-arrow {
	left:1%;
}

.right-arrow {
	right:1%;
}

.arrow:hover {
	opacity:1;
	cursor:pointer;
}

@media (max-width:886px) {
.slider-container {
	max-width:none;
}

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

</head>


<body>


<div id="content">




        <div class="portfolio-item" id="woll">

     		<div class="slider-container">
					<div class="slider"></div>

            			<img class="arrow left-arrow" src="http://authenticid.co/img/leftarrow.png" />
        				<img class="arrow right-arrow" src="https://cdn3.iconfinder.com/data/icons/iconic-1/32/arrow_right_alt1-512.png" />

    				<ul class="slides">

    					<li class="slide img-1"><img src="https://ryanachtman.files.wordpress.com/2014/01/wollwoll-brainstorm.jpg?w=986&h=632&crop=1"></li>
        				<li class="slide img-2"><img src="https://ryanachtman.files.wordpress.com/2014/01/wollwoll-spread.png?w=521&h=658&crop=1"></li>
        				<li class="slide img-3"><img src="https://ryanachtman.files.wordpress.com/2014/01/wollwoll_empowerment-email.png?w=461&h=658&crop=1"></li>

    				</ul>

        	</div>

    	</div>




        <div class="portfolio-item" id="jennyandshawn">

     		<div class="slider-container">
					<div class="slider"></div>

                    <img class="arrow left-arrow" src="http://authenticid.co/img/leftarrow.png">
        			<img class="arrow right-arrow" src="http://www.clker.com/cliparts/9/N/a/Q/C/n/white-arrow-right-md.png">

    				<ul class="slides">

    					<li class="img-1 slide"><img src="https://ryanachtman.files.wordpress.com/2014/09/jenny_shawn-wedding_small_1.jpg?w=1000&h=&crop=1"></li>
        				<li class="img-2 slide"><img src="https://ryanachtman.files.wordpress.com/2014/09/jenny_shawn-save-the-date.jpg?w=1000&h=&crop=1"></li>
        				<li class="img-3 slide"><img src="https://ryanachtman.files.wordpress.com/2014/09/jenny_shawn-table-number.jpg?w=1000&h=&crop=1"></li>
        				<li class="img-4 slide"><img src="Jenny&Shawn/138.jpg"></li>
                        <li class="img-5 slide"><img src="https://ryanachtman.files.wordpress.com/2014/06/138_21.jpg?w=1000&h=&crop=1"></li>

    				</ul>

        	</div>

    	</div>




</div>



<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="slider.js"></script>

</body>

</html>

最佳答案

我想你应该像这样在上下文中使用jQuery

var currentContext = $(this).closest('。slider-container');

因为现在,当您执行操作时:var currentSlide = $('。active-slide');实际上,这会选择两个活动的滑块,而您只想激活单击的那个。



var main = function(){

	$('.slide:first-child').fadeIn(600).addClass('active-slide');

	//right arrow!

    $('.portfolio-item .right-arrow').click( function(){
        // this saves context
        var currentContext = $(this).closest('.slider-container');
        // this select active-slide of the context
        var currentSlide= currentContext.find('.active-slide');

        //var currentSlide=$('.active-slide');
        var nextSlide=currentSlide.next();

        if(nextSlide.length === 0) {
            //nextSlide=$('.slide:first-child');
            // this selects the next slide of the context
            nextSlide= currentContext.find('.slide:first-child');
        }

        currentSlide.fadeOut(600).removeClass('active-slide');
        nextSlide.fadeIn(600).addClass('active-slide');

    });

	//left arrow!

    $('.portfolio-item .left-arrow').click( function(){
        // this saves context
        var currentContext = $(this).closest('.slider-container');
        // this selects the current active slide of the context
        var currentSlide= currentContext.find('.active-slide');

        //var currentSlide=$('.active-slide');
        var prevSlide = currentSlide.prev();

        if(prevSlide.length === 0) {
           //prevSlide=$('.slide:last-child');
           // this selects the previous slide of the context
           prevSlide= currentContext.find('.slide:last-child');
        }

        currentSlide.fadeOut(600).removeClass('active-slide');
        prevSlide.fadeIn(600).addClass('active-slide');
	});
}

$(document).ready(main);

@charset "UTF-8";
/* CSS Document */

.slider-container {
	display: block;
	position:relative;
	width: 100%;
	max-width:600px;
	background-color: black;
	margin: 0% 0% 1% 0%;
	overflow:hidden;
	float:left;
}

.slider {
	position:relative;
	padding-top: 45%;
	z-index:0;
}

ul.slides {
	z-index:1;
	list-style-type:disc;
	display:block;
	position:absolute;
	padding:0;
	margin:0;
	top:0;
	left:0;
	width:100%;
	height:100%;
}

.active-slide {
	display:block;
	margin:0 auto;
}

.slide {
	display:none;
	position:absolute;
	width:100%;
	height:100%;
	transition: all .2s ease-in-out;
   -moz-transition: all .2s ease-in-out;
   -webkit-transition: all .2s ease-in-out;
   overflow:hidden;
}

.slide img{
	margin:0;
	position:absolute;
	width:100%;
	z-index:2;
	left:0;
}

.arrow {
	position:absolute;
	top:42%;
	width:5%;
	opacity: 0.7;
	transition: all .2s ease-in-out;
   -moz-transition: all .2s ease-in-out;
   -webkit-transition: all .2s ease-in-out;
   z-index:3;
}

.left-arrow {
	left:1%;
}

.right-arrow {
	right:1%;
}

.arrow:hover {
	opacity:1;
	cursor:pointer;
}

@media (max-width:886px) {
.slider-container {
	max-width:none;
}

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

</head>
<body>

<div id="content">
        <div class="portfolio-item" id="woll">
     		<div class="slider-container">
					<div class="slider"></div>
            			<img class="arrow left-arrow" src="http://authenticid.co/img/leftarrow.png" />
        				<img class="arrow right-arrow" src="https://cdn3.iconfinder.com/data/icons/iconic-1/32/arrow_right_alt1-512.png" />
    				<ul class="slides">
    					<li class="slide img-1"><img src="https://ryanachtman.files.wordpress.com/2014/01/wollwoll-brainstorm.jpg?w=986&h=632&crop=1"></li>
        				<li class="slide img-2"><img src="https://ryanachtman.files.wordpress.com/2014/01/wollwoll-spread.png?w=521&h=658&crop=1"></li>
        				<li class="slide img-3"><img src="https://ryanachtman.files.wordpress.com/2014/01/wollwoll_empowerment-email.png?w=461&h=658&crop=1"></li>
    				</ul>
        	</div>
    	</div>

        <div class="portfolio-item" id="jennyandshawn">
     		<div class="slider-container">
					<div class="slider"></div>
                    <img class="arrow left-arrow" src="http://authenticid.co/img/leftarrow.png">
        			<img class="arrow right-arrow" src="http://www.clker.com/cliparts/9/N/a/Q/C/n/white-arrow-right-md.png">

    				<ul class="slides">
    					<li class="img-1 slide"><img src="https://ryanachtman.files.wordpress.com/2014/09/jenny_shawn-wedding_small_1.jpg?w=1000&h=&crop=1"></li>
        				<li class="img-2 slide"><img src="https://ryanachtman.files.wordpress.com/2014/09/jenny_shawn-save-the-date.jpg?w=1000&h=&crop=1"></li>
        				<li class="img-3 slide"><img src="https://ryanachtman.files.wordpress.com/2014/09/jenny_shawn-table-number.jpg?w=1000&h=&crop=1"></li>
        				<li class="img-4 slide"><img src="Jenny&Shawn/138.jpg"></li>
                        <li class="img-5 slide"><img src="https://ryanachtman.files.wordpress.com/2014/06/138_21.jpg?w=1000&h=&crop=1"></li>
    				</ul>
        	</div>
    	</div>
</div>

<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<script type="text/javascript" src="slider.js"></script>

</body>

</html>

10-04 21:31
查看更多