我创建了一个幻灯片,使用jQuery在一个时间间隔内淡入淡出图像。我在底部创建了一个导航区域,当您单击一个方块时,它会显示该幻灯片。我需要帮助的两件事。
单击导航方块时,时间将关闭,直至进入下一张自然幻灯片。
我需要当前幻灯片的方块为不同的颜色。我一直在尝试使用匹配的ID向正方形添加一个类,但它不会添加类。
$("#slideshow1 > div:gt(0)").hide();
var newvar = setInterval(function() {
var currentslide = $('.current').attr('id');
$('#slideshow1 > div:first')
.fadeOut(1000)
.next()
.addClass('current')
.fadeIn(1000)
.end()
.removeClass('current')
.appendTo('#slideshow1');
$('.slider-nav').removeClass('active');
$('.slider-nav[data-number=' + currentslide + ']').addClass('active');
}, 5000);
$(".slider-nav").click(function(e){
e.preventDefault();
var currentID = $(this).attr('href');
$('#slideshow1 > div:first').fadeOut(1000);
$('div'+currentID).fadeIn(1000).nextAll("div.slide").addBack().prependTo("#slideshow1");
$('.slider-nav').removeClass('active');
$('.slider-nav[data-number=' + currentID + ']').addClass('active');
clearInterval(newvar);
newvar = setInterval(function() {
$('#slideshow1 > div:first')
.fadeOut(1000)
.next()
.addClass('current')
.fadeIn(1000)
.end()
.removeClass('current')
.appendTo('#slideshow1');
$('.slider-nav').removeClass('active');
$('.slider-nav[data-number=' + currentID + ']').addClass('active');
}, 5000);
});
此幻灯片展示的网站:http://saratoga.mspaceap.com/
答案 0 :(得分:1)
将setInterval分配给这样的变量:
$("#slideshow1 > div:gt(0)").hide();
var interval = setInterval(function() {
var currentslide = $('.current').attr('id');
$('#slideshow1 > div:first')
.fadeOut(1000)
.next()
.addClass('current')
.fadeIn(1000)
.end()
.removeClass('current')
.appendTo('#slideshow1');
}, 5000);
}
然后在点击处理程序中使用clearInterval
,如下所示:
$(".slider-nav").click(function(e){
e.preventDefault();
var currentID = $(this).attr('href');
$('#slideshow1 > div:first').fadeOut(1000);
$('div'+currentID).fadeIn(1000).nextAll("div.slide").addBack().prependTo("#slideshow1");
$('.slider-nav[id=' + currentID + ']').addClass('active');
clearInterval(interval);
});
这样,您的间隔将在点击时重置。
答案 1 :(得分:1)
你的问题在这里:
$('.slider-nav[id=' + currentID + ']').addClass('active');
因为currentID
是一个类似#1
的字符串,因为您之前将它设置为三行:
var currentID = $(this).attr('href');
要修复,请将您的代码更改为:
$('.slider-nav[id=' + currentID.substr(1) + ']').addClass('active')
.siblings().removeClass('active'); // don't forget to do this
说:您的导航元素和幻灯片不应具有相同的ID。 ID应始终是唯一的。我可以看到你正在使用.attr('id')
解决这个问题,但这仍然是不好的做法。请使用常见的data-
属性或类似nav1
的ID。