クライアント向けの小さな広告モジュールを作成しています。30 秒ごとに異なる画像/リンクを表示するコンテナが必要です。コンテナ (div) にはすべての広告が自動的に読み込まれ、残りは関数が処理します。
私の考えは次のとおりです。
- 以下のカスタム関数にセレクターを渡します
- セレクター内のすべての画像を非表示にします
- 「current_link」というクラスを最初の画像に追加し、フェードインします
- 画像配列 (「リンク」と呼ばれる変数) でループを実行し、遅延およびキュー jQuery 関数を使用して、画像を遅延してキューに入れ、互いの後に表示します。
- キュー関数は、アクティブな広告の current_link を削除してフェードアウトし、クラスを次の画像に追加してフェードインします。
言うまでもなく、それほどうまく機能していません:D この段階では、機能がほとんどないため、無限にループすることはありません (広告はループして停止しないはずです)。
コードを改善する方法についてのアドバイス (私は専門家ではありません) をいただければ幸いです。前もって感謝します!
JSFiddle をチェックアウトする
HTML:
<div class="advert_list">
<a href="" target="_Blank"><img src="someimage1.png" /></a>
<a href="" target="_Blank"><img src="someimage2.png" /></a>
</div> <!-- e/o -->
jQuery:
// Advertisement loader
$.fn.image_fader = function(user_options) {
// Image container
var container = this;
// All links:
var links = $(container).find("a");
// Default options:
var default_options = {
path: "",
duration: 30000
};
// Create combined options:
var options = $.extend(default_options, user_options);
// Hide all images:
$(links).hide();
// Show first image:
$(links).first().addClass("current_link").fadeIn();
// Run the loop on the images:
$(links).each(function() {
// current link:
var current_loop_link = this;
$(current_loop_link).delay(options.duration).queue(function(next) {
// Fade out any of the previous links:
$(".current_link").fadeOut();
// Add class to next link:
$(current_loop_link).addClass("current_link");
// Fade in the next link:
$(current_loop_link).fadeIn();
next();
});
});
}
// Call to above function:
$(".advert_list").image_fader();