2012-02-20 4 views
0

imgタグのsrc属性とアンカータグの属性を変更することによって動作する単純なスライダを作成しています。これはこれまでのところ私が思いついたことです:タグの属性を変更するための配列のjQuery繰り返しループ

(function($){ 
    var slides = [ 
     'http://placehold.it/801x350', 
     'http://placehold.it/802x350', 
     'http://placehold.it/803x350' 
    ], 
    titles = [ 
     'Title 1', 
     'Title 2', 
     'Title 3' 
    ], 
    links = [ 
     'http://test1.com', 
     'http://test2.com', 
     'http://test3.com' 
    ], 
    image = $('#stretch-img'), 
    anchor = $('.featured-title>h2>a'); 

    var interval = setInterval(function() { 
     image.attr('src', slides[0]); 
     anchor.attr('href', links[0]); 
     anchor.html(titles[0]); 
    }, 3000); 
})(jQuery); 

単純なフェード効果で配列を連続的にループさせたいと思います。これを行うための最善の方法やこれを行うための方法は何でもできます。私は誰も持っていません。

ありがとうございます!

私はすべての助けに感謝します。あなたの配列をループし

+0

クロスフェードまたはフェードイン/フェードアウト? – David

答えて

2

あなたは現在の位置変数や配列の長さを節約する変数を設定することができます。そして、あなたはフェードアウトすることができますフェードソースを変更する次に

var current = 0, 
    length = slides.length, 
    interval = setInterval(function() { 
     image.attr('src', slides[current]); 
     anchor.attr('href', links[current]).html(titles[current]); 

     current++; 
     if (current >= length) { 
      current = 0; 
     } 
    }, 3000); 

をフェードバックイン::

 image.fadeOut(500, function() { 
      image.attr('src', slides[current]).fadeIn(500); 
      anchor.attr('href', links[current]).html(titles[current]); 

      current++; 
      if (current >= length) { 
       current = 0; 
      } 
     }); 

これは、画像fadeIn(500)キックイン、image要素のloadイベントにアタッチイベントハンドラを使用して固定することができる非常にロードされていないにつながる可能性が

var image = $('#stretch-img').on('load', function() { 
    image.fadeIn(500); 
}); 
fadeIn(500)は、イメージがロードされたときに起動するため、間隔機能から削除することができます。 loadイベントは、イメージのソースが変更され、新しいソースのロードが完了するといつでも発生します。

.on()はjQuery 1.7で新しく、この場合は.bind()と同じです。

+0

素晴らしい。それは完全に機能します。ありがとうございます。ほんとうにありがとう。 1つの質問:フェードインとフェードインのコードを使用しました。問題がありました。スライドとタイトルは1つの違いがありました。つまり画像1のタイトルは2だった。また、アンカー変更コードをfadoOutコールバックに配置することで修正した。 なぜ私はそれをしなければなりませんでしたか?現在の++は両方のステートメントの後ろにあります。私は本当にこれを理解したいと思います。再度、感謝します。 – Aayush

+0

@Aayushこれは、 'current'変数が' fadeOut'コールバック関数の前にインクリメントされていたために起こりました。 'fadeOut'コールバック関数の' current'変数をインクリメントする答えを更新しました。 – Jasper

+0

入手しました。もう一度ありがとう、これは私のために完璧に働いた。 – Aayush

関連する問題