2016-09-26 168 views
0

我一直在试图创建一个jQuery图像滑块。到目前为止,我设法让图像滑块动画和滑动,当点击按钮向前/向后。现在,我正在尝试创建导航点。到目前为止,我已经成功尝试通过动画/点击按钮向前/向后滑动它们。但是当我尝试单击这些点以使活动幻灯片显示时,它将不起作用。这是我的工作(我不把整个代码只是实现了当你点击点的功能)jquery图像滑块导航点不会工作

这里是代码:http://codepen.io/anon/pen/PGmRkR

$(document).ready(function() { 
 
    sliderEvents(); 
 

 
}); 
 
var slides = $("#carousel .slides .slide") 
 
var dots = $(".indicators .circle"); 
 

 
function sliderEvents() { 
 

 
    dots.click(function() { 
 

 
    var indeX = $(this).index(); 
 
    var currentSlide = slides.eq(indeX); 
 
    currentSlide.addClass('active'); 
 
    $(this).addClass('blip'); 
 

 
    currentSlide.prev().removeClass('active'); 
 
    $(this).prev().removeClass('blip'); 
 
    }); 
 
}
html, 
 
body { 
 
    height: 100%; 
 
    position: relative; 
 
} 
 
* { 
 
    box-sizing: border-box; 
 
} 
 
#container { 
 
    width: 90%; 
 
    margin: 0 auto; 
 
    height: 100%; 
 
} 
 
header { 
 
    background: black; 
 
    height: 20px; 
 
    padding: 1.5em; 
 
    color: white; 
 
} 
 
#carousel { 
 
    position: relative; 
 
    margin: 0 auto; 
 
    width: 45%; 
 
    margin-top: 15px; 
 
    height: 100%; 
 
} 
 
.slide { 
 
    position: absolute; 
 
    max-width: 100%; 
 
    z-index: 0; 
 
} 
 
.sliderbuttons {} #prev, 
 
#next { 
 
    position: absolute; 
 
    background-color: rgba(255, 148, 41, 0.68); 
 
    box-shadow: 2px white; 
 
    border: none; 
 
    font-size: 2em; 
 
    color: white; 
 
    font-weight: bold; 
 
    /* \t font-family: 'Baloo Tamma', cursive; 
 
    */ 
 
    padding: 10px; 
 
    top: 15%; 
 
    width: 10%; 
 
    /*making the prev,next on top of content*/ 
 
    z-index: 2; 
 
} 
 
#prev { 
 
    left: 0; 
 
} 
 
#next { 
 
    right: 0; 
 
} 
 
.active { 
 
    z-index: 1; 
 
} 
 
.indicators { 
 
    z-index: 2; 
 
    position: absolute; 
 
    bottom: 49%; 
 
    left: 45%; 
 
} 
 
.circle { 
 
    border-radius: 10px; 
 
    width: 10px; 
 
    height: 5px; 
 
    border: 2px solid black; 
 
} 
 
.indicators div { 
 
    padding: 8px; 
 
    margin: 2px; 
 
    display: inline-block; 
 
} 
 
.blip { 
 
    background-color: orange; 
 
} 
 
div.indicators:hover { 
 
    cursor: pointer; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <title>Image carousel</title> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    <link rel="stylesheet" type="text/css" href="reset.css"> 
 
    <link rel="stylesheet" type="text/css" href="carouselcss.css"> 
 
    <!-- <link href="https://fonts.googleapis.com/css?family=Baloo+Tamma" rel="stylesheet"> --> 
 

 
</head> 
 

 
<body> 
 
    <div id="container"> 
 
    <header> 
 
     header is here 
 
    </header> 
 
    <div id="carousel"> 
 
     <div class="sliderbuttons"> 
 
     <input type="button" name="next" id="next" value="&gt;"> 
 
     <input type="button" name="next" id="prev" value="&lt;"> 
 
     </div> 
 
     <div class="slides"> 
 
     <img src="http://www.planwallpaper.com/static/images/4-Nature-Wallpapers-2014-1_ukaavUI.jpg" alt="image1" class="slide active"> 
 
     <img src="http://www.mrwallpaper.com/wallpapers/green-Rice-1600x900.jpg" alt="image2" class="slide"> 
 
     <img src="http://cdn.wonderfulengineering.com/wp-content/uploads/2016/01/nature-wallpapers-10.jpg" alt="image3" class="slide"> 
 

 
     </div> 
 
     <div class="indicators"> 
 
     <div class="circle blip"></div> 
 
     <div class="circle"></div> 
 
     <div class="circle"></div> 
 
     </div> 
 

 

 
    </div> 
 

 
    </div> 
 
    <script type="text/javascript" src="jquery-1.12.1.js"></script> 
 
    <script type="text/javascript" src="jquery-ui.js"></script> 
 
    <script type="text/javascript" src="carousel.js"></script> 
 

 
</body> 
 

 
</html>

+0

谢谢回复!这些点适用于一套。就像如果你点击圈1,幻灯片1出现。但在重新点击圈1时,幻灯片不显示。我不确定如何将圈子链接到幻灯片。我是新来的JavaScript/jquery – Ndx

+0

你能修理你的jsfiddle,所以我可以帮忙吗?它不适合我(图片不会改变点击) –

+0

jsfiddle似乎缺少一些jQuery库。我已经把代码放在这里http://codepen.io/anon/pen/PGmRkR它应该工作 – Ndx

回答

0

你必须从每个元素中删除blip和活动类,因此它们不会堆叠在彼此之上。 Here you go:http://codepen.io/denea/pen/wzdmoY

$(document).ready(function(){ 
sliderEvents(); 
//startSlider(); 

}); 

var slides = $("#carousel .slides .slide"); 
var dots=$(".indicators .circle"); 

function sliderEvents() { 

dots.click(function() { 

var indeX=$(this).index(); 
//console.log(indeX); 
var currentSlide=slides.eq(indeX); 
currentSlide.addClass('active'); 
$(this).addClass('blip'); 

    $(".slides img").not(currentSlide).removeClass('active'); 
    $(".circle").not(this).removeClass('blip'); 
//console.log(currentSlide.prev().index()); 
}); 
} 
+0

它的工作!谢谢:),是的,这就是我一直在试图做的事(从以前点击过的元素中删除班级blip和活动),但我不知道正确的语法。 – Ndx

+0

好极了,你可以将它标记为解决方案,以防止它帮助你。 –