我正在为客户创建一个小广告模块。他们需要一个容器来每 30 秒显示一个不同的图像/链接。容器 (div) 将自动将所有广告加载到其中,然后该函数应处理其余部分。
我的想法如下:
- 将选择器传递给下面的自定义函数
- 隐藏选择器中的所有图像
- 将一个名为“current_link”的类添加到第一个图像,然后将其淡入
- 在图像数组(称为“链接”的变量)上运行一个循环,并使用延迟和队列 jQuery 函数将图像排队并延迟显示。
- queue 函数将移除活动广告的 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();