[英]How do I add and remove classes from the navigation menu when clicking on next and previous?
I'm trying to implement a carousel with Javascript but I'm having trouble with my navigation buttons. 我正在尝试使用Javascript实现轮播,但导航按钮遇到了麻烦。 I want to add a class active to those items (.carousel-dots-nav-item) when their respective images are showing. 我想在显示它们各自的图像时向这些项目(.carousel-dots-nav-item)添加活动的类。
I figured out how to do it when clicking on the navigation menu but I'm having trouble with the Prev and Next buttons. 单击导航菜单时,我想出了解决方法,但是上一个和下一个按钮遇到了麻烦。
You can see the full code at jsfiddle 您可以在jsfiddle上看到完整的代码
Here is the javascript file: 这是JavaScript文件:
$(document).ready(function() {
var carouselItems = [
{ src: "http://placehold.it/600x300/cccccc/000000", title: "Sample 01" },
{ src: "http://placehold.it/600x300/f45a45/000000", title: "Sample 02" },
{ src: "http://placehold.it/600x300/b78d65/000000", title: "Sample 03" },
{ src: "http://placehold.it/600x300/666aa0/000000", title: "Sample 04" },
{ src: "http://placehold.it/600x300/cccddd/000000", title: "Sample 05" }
];
Carousel = function() {
// keep track of the current position
var position = 0;
// build carousel based on items in the carouselItems array
$(carouselItems).each(function(index, value){
var li = $('<li/>');
li.addClass('carousel-item');
li.css('width', 100 / carouselItems.length + '%');
li.appendTo($('#carousel'));
var img = $('<img/>');
img.attr('src', value.src);
img.attr('title', value.title);
img.appendTo(li);
var liDot = $('<li/>');
liDot.data('position', index); // Store the position of the respectives images & dots
liDot.data('title',value.title); //Store the image titles on each dot instance
liDot.addClass('carousel-dots-nav-item').html('o');
liDot.appendTo($('#carousel-dots-nav'));
});
//increase width of the carousel
$('#carousel').css('width', carouselItems.length * 100 + '%');
//add events to dots
for (i = 0; i < $('.carousel-dots-nav-item').length; i++) {
var dot = $('.carousel-dots-nav-item')[i];
// show the title of the image when hovering the associated dot
$(dot).hover(function(e){
//$('#title').text(carouselItems[i].title);
$('#title').text($(this).data('title'));
}, function(e){
$('#title').text('');
});
// move to the appropriate slide when a dot is clicked
$(dot).click(function(e){
//position = i; //i -> $('.carousel-dots-nav-item').length
var position= $(this).data('position'); //Position based on the index
$('.active').removeClass('active'); //Reset classes .active from all dots
$(this).addClass('active'); //Add class .active to clicked dot
$('#carousel').animate({
left: -position * 100 + '%'
}, 500);
});
}
// add click event to next button
$("#next").click(function(e){
e.preventDefault();
if (position == carouselItems.length - 1) return;
$('.active').removeClass('active');
position++;
//$('.carousel-dots-nav-item').data('position');
$('#carousel').animate({
left: -position * 100 + '%'
}, 500);
});
// add click event to previous button
$("#previous").click(function(e){
e.preventDefault();
if (position == 0) return;
$('.active').removeClass('active');
position--;
$('#carousel').animate({
left: -position * 100 + '%'
}, 500);
});
};
var carousel = new Carousel();
});
嗨,请检查jsfiddle上的更新代码
$('#carousel-dots-nav li').eq(position).addClass('active');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.