所以我制作了一个自定义 jquery slider ,您可以在其中使用 next 和 prev 按钮(DOM 中的 next 和 prev 类)浏览内容 slider 。出于某种原因,我得到的结果非常随机,只有在按下 prev 按钮后从一张幻灯片切换到另一张幻灯片,我控制台记录结果以便您可以看到可见索引。
这是我的代码:
$(document).ready(function(){
var sliders = $('.slider');
var show_index = 0;
$('.slider').eq(show_index).addClass('active_slider');
console.log(show_index);
console.log(sliders.length);
$('.prev').click(function(){
console.log('clicked prev');
if(show_index == 0){
$('.slider').eq(show_index).removeClass('active_slider');
$('.slider').eq(show_index-1).addClass('active_slider');
console.log(show_index);
}
else{
$('.slider').eq(show_index).removeClass('active_slider');
$('.slider').eq(show_index--).addClass('active_slider');
console.log(show_index);
}
});
$('.next').click(function(){
console.log('clicked next');
if(show_index == sliders.length){
$('.slider').eq(show_index).removeClass('active_slider');
$('.slider').eq(0).addClass('active_slider');
console.log(show_index);
}
else{
$('.slider').eq(show_index).removeClass('active_slider');
$('.slider').eq(show_index++).addClass('active_slider');
console.log(show_index);
}
});
});
/*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; 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; 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:10000;}
.gran_slider_big_navegation_dot{width:15px; height:15px; background-color:rgba(255,255,255,0.4); margin:0px 3px; border-radius:50%;}
.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.3); position:absolute; top:0px; left:0px;}
.gran_slider_big_item_image{width:100%; height:100%; z-index:2; background-position:center; 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;}
/*GRAN SLIDER END*/
.from_right_to_bottom {
position: absolute;
right: 120px;
opacity: 0;
animation-name: from_right_to_bottom;
animation-delay: 1500ms;
animation-duration: 6s;
animation-fill-mode: forwards;
-moz-animation-fill-mode: forwards;
animation-iteration-count: 1;
z-index:9999;
text-align:right;
}
@keyframes from_right_to_bottom {
0% {top: -200px; opacity: 0;}
100% {top: 250px; opacity: 1;}
}
<script
src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<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=" ">
<a class="gran_slider_big_navegation_dot" href="" style=""></a>
<a class="gran_slider_big_navegation_dot" href="" style=""></a>
<a class="gran_slider_big_navegation_dot" href="" style=""></a>
</div>
-->
<div class="gran_slider_big_item_container slider" 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 class="gran_slider_big_item_container slider" 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" style="">
<div class="gran_slider_big_item_gradient_overlay" style=""></div>
<div class="gran_slider_big_item_image move" style="background-color:green;"></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>
最佳答案
我认为您需要在点击事件中设置全局变量 (show_index
)。仅执行 show_index++
不会设置值...您需要使用等号 (=
) 设置值,例如 show_index = {some value };
您的 prev
点击事件应该看起来更像这样:
$('.prev').click(function() {
console.log('clicked prev');
if (show_index == 0) {
$('.slider').eq(show_index).removeClass('active_slider');
show_index = (sliders.length - 1); // set your global variable
$('.slider').eq(show_index).addClass('active_slider');
console.log(show_index);
} else {
$('.slider').eq(show_index).removeClass('active_slider');
show_index = show_index - 1; // set your global variable
$('.slider').eq(show_index).addClass('active_slider');
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 global variable
$('.slider').eq(show_index).addClass('active_slider');
console.log(show_index);
} else {
$('.slider').eq(show_index).removeClass('active_slider');
show_index = show_index + 1; //set global variable
$('.slider').eq(show_index).addClass('active_slider');
console.log(show_index);
}
});
var show_index = 0;
$(document).ready(function(){
var sliders = $('.slider');
$('.slider').eq(show_index).addClass('active_slider');
console.log(show_index);
console.log(sliders.length);
$('.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');
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');
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');
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');
console.log(show_index);
}
});
});
/*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; 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; 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:10000;}
.gran_slider_big_navegation_dot{width:15px; height:15px; background-color:rgba(255,255,255,0.4); margin:0px 3px; border-radius:50%;}
.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.3); position:absolute; top:0px; left:0px;}
.gran_slider_big_item_image{width:100%; height:100%; z-index:2; background-position:center; 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;}
/*GRAN SLIDER END*/
.from_right_to_bottom {
position: absolute;
right: 120px;
opacity: 0;
animation-name: from_right_to_bottom;
animation-delay: 1500ms;
animation-duration: 6s;
animation-fill-mode: forwards;
-moz-animation-fill-mode: forwards;
animation-iteration-count: 1;
z-index:9999;
text-align:right;
}
@keyframes from_right_to_bottom {
0% {top: -200px; opacity: 0;}
100% {top: 250px; opacity: 1;}
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<script
src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous"></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=" ">
<a class="gran_slider_big_navegation_dot" href="" style=""></a>
<a class="gran_slider_big_navegation_dot" href="" style=""></a>
<a class="gran_slider_big_navegation_dot" href="" style=""></a>
</div>
-->
<div class="gran_slider_big_item_container slider" 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 class="gran_slider_big_item_container slider" 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" style="">
<div class="gran_slider_big_item_gradient_overlay" style=""></div>
<div class="gran_slider_big_item_image move" style="background-color:green;"></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>
关于javascript - JQuery slider next 和 prev 按钮仅在单击垃圾邮件时才有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50450583/