JQuery滑块导航点不起作用

时间:2018-05-22 14:42:23

标签: javascript jquery html css

所以我正在制作一个自定义jquery滑块,滑块工作得很好,但导航点由于某种原因不起作用,如果我点击一个导航点,相应的滑块应该可见,但它只是显示空白。

这是代码的重要部分,我根据滑块的数量添加点,以及在点上注册点击事件的位置:



$('.slider').each(function(){
        $('.gran_slider_big_navegation_container').append('<span class="dot"></span>');
    });
	
	
	$('.dot').click(function(){
        index = $(this).eq();
		console.log(index);
        $('.slider').removeClass('active_slider');	
	    $('.slider').eq(index).addClass('active_slider');
		show_index = index;
		
    });
&#13;
&#13;
&#13;

以下是滑块的完整代码,现在就是:

&#13;
&#13;
$(document).ready(function(){
	
	
	var interval = 12000;
	var sliders = $('.slider');
	var dots = $('.dot');
	var index = 0;
	var show_index = 0;
	
	
	$('.slider').eq(show_index).addClass('active_slider');
	$('.dot').eq(show_index).addClass('active_dot');
	console.log(show_index);
	console.log(sliders.length);
	
	
	
	
	setInterval(function() {
        
		if(show_index == (sliders.length- 1)){
			
			
			$('.slider').eq(show_index).removeClass('active_slider');
            show_index = 0;	// set it here
		    $('.slider').eq(show_index).addClass('active_slider');
            $('.dot').removeClass('active_dot');			
			$('.dot').eq(show_index).addClass('active_dot');			
			console.log(show_index);
		}
		
		else{
			
			
			$('.slider').eq(show_index).removeClass('active_slider');
            show_index = show_index + 1; // set it here	
		    $('.slider').eq(show_index).addClass('active_slider');
			$('.dot').removeClass('active_dot');			
			$('.dot').eq(show_index).addClass('active_dot');
            console.log(show_index);			
		}
		
    }, interval);
	
	
	
	
	$('.prev').click(function(){
		
		console.log('clicked prev');
		
		if(show_index == 0){
			
			
			$('.slider').eq(show_index).removeClass('active_slider');
            show_index = (sliders.length - 1);// set it here
		    $('.slider').eq(show_index).addClass('active_slider');
            $('.dot').removeClass('active_dot');			
			$('.dot').eq(show_index).addClass('active_dot');			
			console.log(show_index);
		}
		
		else{
			
			$('.slider').eq(show_index).removeClass('active_slider');
            show_index = show_index - 1; // set it here	
		    $('.slider').eq(show_index).addClass('active_slider');
			$('.dot').removeClass('active_dot');			
			$('.dot').eq(show_index).addClass('active_dot');
            console.log(show_index);			
		}
    });
	
	
	
	$('.next').click(function(){
		
		console.log('clicked next');
		
		if(show_index == (sliders.length- 1)){
			
			
			$('.slider').eq(show_index).removeClass('active_slider');
            show_index = 0;	// set it here
		    $('.slider').eq(show_index).addClass('active_slider');
            $('.dot').removeClass('active_dot');			
			$('.dot').eq(show_index).addClass('active_dot');
			console.log(show_index);
		}
		
		else{
			
			
			$('.slider').eq(show_index).removeClass('active_slider');
            show_index = show_index + 1; // set it here	
		    $('.slider').eq(show_index).addClass('active_slider');
			$('.dot').removeClass('active_dot');			
			$('.dot').eq(show_index).addClass('active_dot');
            console.log(show_index);			
		}
    });
	
	
	
	
	$('.slider').each(function(){
        $('.gran_slider_big_navegation_container').append('<span class="dot"></span>');
    });
	
	
	$('.dot').click(function(){
        index = $(this).eq();
		console.log(index);
        $('.slider').removeClass('active_slider');	
	    $('.slider').eq(index).addClass('active_slider');
		show_index = index;
		
    });
	
	
});
&#13;
/*GRAN SLIDER START*/
.gran_slider_maincontainer{width:100%; height:100vh; display:flex; flex-direction:column; overflow:hidden;}
.gran_slider_big_container{width:100%; position:relative; height:90vh; overflow:hidden;}
.prev{cursor:pointer; position:absolute; left:20px; transition:all 1000ms ease; opacity:0; z-index:9999999999999999999999999999; top:50%; transform:translateY(-50%); font-size:20px; color:rgba(255,255,255,0.8);}
.next{cursor:pointer; position:absolute; right:20px; transition:all 1000ms ease; opacity:0; z-index:9999999999999999999999999999;  top:50%; transform:translateY(-50%); font-size:20px; color:rgba(255,255,255,0.8);}
.gran_slider_big_navegation_container{width:auto; height:30px; display:flex; align-items:center; position:absolute; bottom:25px; right:50px; z-index:9999999999999999999999999999;}
.dot{width:15px; height:15px;  background-color:rgba(0,0,0,0.7); transition: all 2000ms ease; margin:0px 6px; border-radius:50%; cursor:pointer;}
.gran_slider_big_container:hover .prev{opacity:1;}
.gran_slider_big_container:hover .next{opacity:1;}
.gran_slider_big_item_container{display:none; width:100%; height:100%; position:relative; overflow:hidden;}
.gran_slider_big_item_gradient_overlay{width:100%; height:100%; z-index:3; background-color:rgba(0,0,0,0.4); position:absolute; top:0px; left:0px;}
.gran_slider_big_item_image{width:100%; height:100%; z-index:2; background-size:cover;}
.gran_slider_big_item_texts_container{width:55%; height:auto; display:flex; flex-direction:column; padding:10px;}
.gran_slider_big_item_texts_title{font-size:45px; color:white; font-weight:600; margin-bottom:30px; text-shadow:5px 5px 10px rgba(0,0,0,1.0);}
.gran_slider_big_item_texts_description{font-size:30px; color:white; font-weight:600 margin-bottom:30px; text-shadow:5px 5px 10px rgba(0,0,0,1.0);}
.gran_slider_small_container{width:100%; height:10vh; background: linear-gradient(to bottom, rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0));}
.active_slider{display:flex; opacity:1;}
.active_dot{background-color:rgba(255,255,255,0.9);}
/*GRAN SLIDER END*/
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="gran_slider_maincontainer" style="">
    <div class="gran_slider_big_container" style=" ">
	    <i class="prev fa fa-chevron-left" style=""></i>
		<i class="next fa fa-chevron-right" style=""></i>
        <div class="gran_slider_big_navegation_container" style=" "></div>
	    <div class="gran_slider_big_item_container slider fade" style="">
	        <div class="gran_slider_big_item_gradient_overlay" style=""></div>
	        <div class="gran_slider_big_item_image move" style="background-color:red;"></div>
	        <div class="gran_slider_big_item_texts_container from_right_to_bottom" style=" ">
			    <span class="gran_slider_big_item_texts_title" style="">Titulo</span>
				<span class="gran_slider_big_item_texts_description" style="">Esta es una descripción que se mueve hacia la derecha, empezando por fuera de la derecha.</span>
			</div>
	    </div>
		<div class="gran_slider_big_item_container slider fade" style="">
	        <div class="gran_slider_big_item_gradient_overlay" style=""></div>
	        <div class="gran_slider_big_item_image move" style="background-color:yellow;"></div>
	        <div class="gran_slider_big_item_texts_container from_right_to_bottom" style=" ">
			    <span class="gran_slider_big_item_texts_title" style="">Titulo</span>
				<span class="gran_slider_big_item_texts_description" style="">Esta es una descripción que se mueve hacia la derecha, empezando por fuera de la derecha.</span>
			</div>
	    </div>
		<div class="gran_slider_big_item_container slider fade" style="">
	        <div class="gran_slider_big_item_gradient_overlay" style=""></div>
	        <div class="gran_slider_big_item_image move" style="background-color:blue;"></div>
	        <div class="gran_slider_big_item_texts_container from_right_to_bottom" style=" ">
			    <span class="gran_slider_big_item_texts_title" style="">Titulo</span>
				<span class="gran_slider_big_item_texts_description" style="">Esta es una descripción que se mueve hacia la derecha, empezando por fuera de la derecha.</span>
			</div>
	    </div>
    </div>
    <div class="gran_slider_small_container" style=""></div>
</div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

在单击dot时调用的函数中,您将索引变量设置为该点的.eq()。你也将它打印到控制台,控制台打印一个对象而不是索引(我假设是你希望从这个函数得到的)。因为您无法从整个对象中精确获取索引,所以滑块代码会运行,但无法找到与索引匹配的任何滑块(因为不会有任何滑块)。

因此,而不是说

index = $(this).eq();

您可能想要这样说:

index = $(this).index();

这会将索引变量设置为单击的点的变量,然后将滑块更新为该变量。我知道这不会修复按钮(即使点击其他按钮,活动按钮也会保持显示),但我不确定这是否在你的问题范围内。