你有一个逻辑错误
function manageControls(position){}
您使用该功能有两个目的。
- 根据您所在的幻灯片显示/隐藏左/右控件
- 根据滑块是可见还是隐藏,显示/隐藏左/右控件。
但它总是像第一个场景一样工作。我的建议是简单地为您的函数添加另一个参数。
function manageControls(position, flag){}
在“显示”、“隐藏”和“检查”标志中发送一个值,用于显示两个控件,隐藏两个控件并显示与幻灯片编号相关的内容。然后根据情况重新编写你的函数调用。
将 css 中 .control 的显示属性设置为“无”。并在js中做如下改动。
$(document).ready(function () {
var out = 0;
var currentPosition = 0;
var slideWidth = 400;
var slides = $(".slide");
var slidesNumber = slides.length;
$("#button").click(function () {
if (out === 0) {
manageControls(currentPosition, 'show'); // Show controls on slide show
$("#center, #slideshow, .slide").animate({
width: "400px"
}, {
queue: false,
duration: 1900
});
$(".slide").delay(2000).animate({
opacity: "1"
}, 1500);
out = 1;
} else {
manageControls(currentPosition, 'hide'); // Hide controls on slide hide
$("#center, #slideshow, .slide").animate({
width: "0px"
}, {
queue: false,
duration: 2000
});
$(".slide").stop(true).animate({
opacity: "0"
}, 250);
out = 0;
}
});
//Slideshow
$("#slideshow").css("overflow", "hidden");
// No need for this line if .control set to hidden in css.
//manageControls(currentPosition);
$('.control').click(function () {
currentPosition = ($(this).attr('id') == 'right-control') ? currentPosition + 1 : currentPosition - 1;
manageControls(currentPosition, 'check'); // Show/hide controls on control click
$('#slides').animate({
'left': slideWidth * (-currentPosition)
}, 600);
});
function manageControls(position, flag) {
// Checks for control display
if (flag == 'check') {
if (position === 0) {
$('#left-control').hide();
} else {
$('#left-control').show();
}
if (position == slidesNumber - 1) {
$('#right-control').hide();
} else {
$('#right-control').show();
}
} else if (flag == 'show') {
$('.control').show();
} else if (flag == 'hide') {
$('.control').hide();
}
}
//End Slideshow
});
但是你需要检查你的代码。您可能是初学者,但您应该始终致力于优化您的代码。你的代码需要它。