这应该可以解决您的问题:
$(document).ready(function () {
var inner = $('.carousel-inner'),
slides = inner.find('li'),
width = slides.eq(0).outerWidth(true),
max = (width * slides.length) - width;
$('#right, #left').on('click', function () {
var currRight = parseInt(inner.css('right'), 10), move;
if (this.id === 'right') {
move = currRight === max ? 0 : currRight+width;
} else {
move = currRight === 0 ? max : currRight-width;
}
inner.animate({ right: move }, 500);
});
});
前四行缓存元素并设置一些基本变量,例如right
可以使用的最大值和width
幻灯片的值。
然后我将这些click
事件结合起来以避免重复。click 事件的第一行定义currRight
为$('.carousel-inner')
的当前 CSSright
值以及move
稍后使用的值。
if (this.id === 'right'){ /* #right */ }else{ /* #left */ }
检查id
被点击元素的 是right
还是left
。if 语句中的代码只是检查滑块是处于零(开始)还是最大值(结束),然后将move
变量设置为正确的值。
它在这里工作:http: //jsfiddle.net/mFxcq/10/
更新:要使幻灯片在计时器上移动,请在附加点击事件后添加:
function setTimer(){
clearTimeout(window.slideTimer);
window.slideTimer = setTimeout(function(){ $('#right').trigger('click'); }, 5000);
};
setTimer();
然后立即添加setTimer();
,inner.animate({ right: move }, 500);
一切都会按预期工作。
它在这里工作:http: //jsfiddle.net/mFxcq/14/