2011-01-29 9 views
2

私はdiv文章をたくさん含んでいます。私は<ul>リストにこれらのステートメントをまとめましたが、これは変更される可能性があります。どのようにしてこれらのステートメントを回転するように(それぞれ4秒ごとに)表示することができますか?また、現在のステートメントを保持する一時停止ボタンがあるのを見ていますが、まず基本的なことをしたいと思います。文章をループする方法

<div id="statements"> 
    <ul> 
    <li>Statement 1</li> 
    <li>Statement 2</li> 
    <li>Statement 3</li> 
    </ul> 
</div> 

答えて

4

例:http://jsfiddle.net/YSPe7/

var statements = $('#statements > ul > li').slice(1).hide().end(); 

var i = 0; 
function rotate() { 
    setTimeout(function() { 
     statements.eq(i).fadeOut(800, function() { 
      i = ++i % statements.length; 
      statements.eq(i).fadeIn(800, rotate); 
     }); 
    }, 4000); 
} 
rotate(); 

は基本的に、私たちはその後、セット全体を参照し、最初の文以外のすべてを隠しています。

次に、rotate()関数を呼び出します。関数内にはsetTimeout()があり、4秒の遅延が発生します。

タイムアウトのコードが実行されると、文の現在の値がifadeOut()(docs)メソッドが実行されます。

​​には、iをインクリメントする(または0に戻す)コールバックがあり、その新しい要素に対してfadeIn()(docs)メソッドが実行されます。

.fadeIn()には、同じプロセスであるrotate()関数であるコールバックがあります。


あなたはこのようなrotate()への引数として渡し、iで名前空間を汚染したくない場合は、次の

例:http://jsfiddle.net/YSPe7/1/

var statements = $('#statements > ul > li').slice(1).hide().end(); 

function rotate(i) { 
    setTimeout(function() { 
     statements.eq(i).fadeOut(800, function() { 
      i = ++i % statements.length; 
      statements.eq(i).fadeIn(800, function() { 
       rotate(i); 
      }); 
     }); 
    }, 4000); 
} 
rotate(0); 

編集:を使用してコードを少し減らすことができます代わりにsetTimeoutのメソッドを使用します。

例:http://jsfiddle.net/YSPe7/2/

var statements = $('#statements > ul > li').slice(1).hide().end(); 

function rotate(i) { 
    statements.eq(i).delay(4000).fadeOut(800, function() { 
     i = ++i % statements.length; 
     statements.eq(i).fadeIn(800, function() { 
      rotate(i); 
     }); 
    }); 
} 
rotate(0); 
+0

@patrick dw +1ありがとうございます。完全に高密度に聞こえるわけではありませんが、もし私のマークアップがこのように見えるならhttp://jsfiddle.net/SmJMP/どこのdivに2つのdivがあるのでしょうか? – zmol

+0

@zmol:divにペアをラップすることができればもっと簡単になります。それは可能でしょうか? – user113716

+0

@zmol:[対処方法](http://jsfiddle.net/SmJMP/1/)がペアになっている場合。コールバック関数が2回実行されるのを防ぐ必要があるため、毎回 '' fadeIn() 'と' 'rotate()'を2倍にする必要があるので、少し複雑です。ペアをラップすることができれば、セレクタを変更するだけです。 – user113716

1

あなたはそれが正確に何をしたい行います使用することができるjQueryプラグインがあります。 jShowOff(http://ekallevig.com/jshowoff/)と呼ばれます。そこにあなたの開始を得なければならない例がうまくあります。

関連する問題