简单的JQuery滑块无法正常工作

时间:2016-09-20 14:39:00

标签: javascript jquery html css

我是jQuery和javascript的新手,我正在制作一些动画来练习我的新技能。下面的代码是一个简单的滑块,它使用setInterval()循环浏览4个幻灯片,也可以在单击时导航。滑块工作正常,但第一张或最后一张幻灯片处于活动状态且单击按钮时除外。在这种情况下,滑块在循环返回之前显示空白幻灯片。当margin-left等于-2880px时,我试图在点击时操纵ul,没有任何成功。这是我的代码:

var i = 0;

$(document).ready(function() {
  setInterval(function() {
  $("#my-slider").animate({"margin-left": "-=720px"}, 1000, function(){
    	i++; 
    	if( i === 4 ) {
          i = 0; 
           $("#my-slider").css("margin-left", 0); 
    	}
     }); 
    }, 5000); 
  })
  $(document).ready(function() {
$(".right").click(function() {
    $("#my-slider").animate({"margin-left": "-=720px"}, 1000);  
}); 

$(".left").click(function() {
	$("#my-slider").animate({"margin-left": "+=720px"}, 1000); 
   }); 
 });
.slider-wrapper {
	width: 50%;
	height: 400px;
	margin: 0 auto;
	overflow: hidden; 
}

.slider-wrapper ul {
	list-style-type: none; 
	width: 3600px;
	max-width: 3600px;
	height: 400px;
	padding: 0; 
	margin: 0; 
}

.slider-wrapper li {
	float: left;
	width: 720px;
	height: 400px; 
}

#slide1 {
background: #04151F; 
}

#slide2 {
	background: #183A37; 
}

#slide3 {
	background: #EFD6AC; 
}

#slide4 {
	background: #C44900;
}

#slide5 {
	background: #04151F; 
}

.left, .right {
	font-size: 40px; 
	z-index: 1;
	position: fixed; 
	float: right; 
	margin: -15% 0 0 0.5%; 
	cursor: pointer;
	color: #FFF;
}

.right {
	margin-left: 47%;   
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="slider-wrapper">
	<ul id="my-slider">
		<li id="slide1"></li>
		<li id="slide2"></li>
		<li id="slide3"></li>
		<li id="slide4"></li>
		<li id="slide5"></li>
	</ul>
	<p class="left">&larr;</p>
	<p class="right">&rarr;</p>
</div>

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您还需要使用循环中的代码作为按钮。

$(document).ready(function() {
$(".right").click(function() {
    $("#my-slider").animate({"margin-left": "-=720px"}, 1000, function(){
    i++; 
        if( i === 4 ) {
          i = 0; 
           $("#my-slider").css("margin-left", 0); 
        }
  });   
});

答案 1 :(得分:0)

我认为这是最简单的解决方案!

  

https://jsfiddle.net/nbLz6zzb/1/

var i = 0;

$(document).ready(function() {

  setInterval(function() {
  $("#my-slider").animate({"margin-left": "-=720px"}, 1000, function(){
        i++; 
        if( i === 4 ) {
          i = 0; 
           $("#my-slider").css("margin-left", 0); 
        }
     }); 
    }, 5000); 


/////////////////////////////////////

$(".right").click(function() {
    $("#my-slider").animate({"margin-left": "-=720px"}, 1000, function(){
        i++; 
        if( i === 4 ) {
          i = 1; 
           $("#my-slider").css("margin-left", 0); 
        }
     });    
}); 

$(".left").click(function() {

	if ( $("#my-slider").css("margin-left") <= '720px' && $("#my-slider").css("margin-left") >= '0px') {
		$("#my-slider").animate({"margin-left": "-2880px"}, 1000); 
	} else {
		$("#my-slider").animate({"margin-left": "+=720px"}, 1000); 
	}

   }); 


});
.slider-wrapper {
width: 50%;
height: 400px;
margin: 0 auto;
overflow: hidden; 
}

.slider-wrapper ul {
list-style-type: none; 
width: 3600px;
max-width: 3600px;
height: 400px;
padding: 0; 
margin: 0; 
}

.slider-wrapper li {
float: left;
width: 720px;
height: 400px; 
}

#slide1 {
background: #04151F; 
}

#slide2 {
background: #183A37; 
}

#slide3 {
background: #EFD6AC; 
}

#slide4 {
background: #C44900;
}

#slide5 {
background: #04151F; 
}

.left, .right {
font-size: 40px; 
z-index: 1;
position: fixed; 
float: right; 
margin: -15% 0 0 0.5%; 
cursor: pointer;
color: #FFF;
}

.right {
margin-left: 47%;   
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="slider-wrapper">
<ul id="my-slider">
    <li id="slide1"></li>
    <li id="slide2"></li>
    <li id="slide3"></li>
    <li id="slide4"></li>
    <li id="slide5"></li>
</ul>
<p class="left">&larr;</p>
<p class="right">&rarr;</p>
</div>