要素の幅を変更したり、タイムラインにいくつかの新しい要素を追加/削除したりしても、このソリューションは機能しません。
これがjsFiddleの動作です。
var liWidth = $('#timeline ul li').outerWidth(true);
//this calculates element's width with their margins/paddings/borders
var liTotal = $('#timeline ul li').index()-9;
//need to descry first seen li's from calculation for true value of MaxRange
var MaxRange = ( liTotal * liWidth ) * -1;
$('.prev').click(function(){
var current = parseInt($('#timeline').css('right'));
if ( current <= 0 && current > MaxRange ) {
$timeline.stop(false,true).animate({'right':'-='+liWidth+'px'},1000);
}
});
$('.next').click(function(){
var current = parseInt($('#timeline').css('right'));
if ( current <= -1 ) {
$timeline.stop(false,true).animate({'right':'+='+liWidth+'px'},1000);
}
});
そして、これを完璧に実行したい場合:次のif条件をもう1つ追加する必要があります。左に移動して右に移動ボタンをクリックし、$ timelineの右のcssに異なる値を追加すると、このボタンは完全にスライドしません。
現在の権利の値を50/liWidthに除算する方程式を記述できます。除算できない場合は、タイムラインをリセットして、next/prev関数を再度初期化できます。