2011-07-03 10 views
2

私はthis bit of codeのウィジットが基本的なスライダーを探していて、それが十分に近いと思っていますが、それが最後のliになったらループしたいと思います。まず、継続してjQuery looping prev next

すべてのご協力をいただき、ありがとうございます。

$('.udtalelse').addClass("passiv"); 
ctrlKunder(0); 

$('#prev').click(function() { 
    var index = getActive(); 
    if (index == 0) return; 
    index--; 
    ctrlKunder(index); 
}) 
$('#next').click(function() { 
    var index = getActive(); 
    if (index == $('.udtalelse').length - 1) return; 
    index++; 
    ctrlKunder(index); 
}) 

function ctrlKunder(ele) { 
    $('.udtalelse').removeClass("active").addClass("passiv"); 
    $('.udtalelse').eq(ele).removeClass("passiv").addClass("active"); 
} 

function getActive() { 
    var index; 
    $('.udtalelse').each(function(i) { 
     if ($(this).hasClass("active")) index = i; 
    }) 
    return index; 
} 

<ul class="kunder"> 
    <li><span class="udtalelse">Indhold 1</span></li> 
    <li><span class="udtalelse">Indhold 2</span></li> 
    <li><span class="udtalelse">Indhold 3</span></li> 
</ul> 
<span class="kunderpagination"> 
    <a href="#" id="prev">« Previous</a> | 
    <a href="#" id="next">Next »</a> 
</span> 

答えて

5

あなたのコードは非常にこのように簡略化することができます。

var all = $('.udtalelse').addClass("passiv"); 

var i = -1; 

$('#prev').click(function() { 
    ctrlKunder(i = !i ? all.length - 1 : --i); 
}); 
$('#next').click(function() { 
    ctrlKunder(i = ++i % all.length); 
}).click(); 

function ctrlKunder(ele) { 
    all.removeClass("active").addClass("passiv"); 
    all.eq(ele).removeClass("passiv").addClass("active"); 
} 

.udtalelse要素がキャッシュされるため、さらに効率的です。

例:http://jsfiddle.net/3z9uc/


EDIT:私はフィドルでのリビジョンとの答えを更新するのを忘れていました。一定。

+0

すごく簡単ですね、ありがとう – Dizzi

+1

@Dizzi:ようこそ。 – user113716

+0

このclick()の後ろにある別のclick()が何をしているのか聞いてもいいですか?$( '#next')click(function(); –

3

変更し、これに:

 $('#next').click(function(){ 
      var index = getActive(); 
      if(index == $('.udtalelse').length - 1) { 
       index = 0; 
      } else { 
       index++; 
      } 
      ctrlKunder(index); 

そして、あなたが以前に同じラップをしたい場合:

 $('#prev').click(function(){ 
      var index = getActive(); 
      if(index == 0) { 
       $index = $('.udtalelse').length - 1; 
      } else { 
       index--; 
      } 
      ctrlKunder(index); 
     }) 
関連する問題