我试图创建一个淡入淡出的图像幻灯片,只有我的第一张图片保持清爽,有人能看到我可能出错的地方吗?
HTML:
<div id="slideshow">
<a href="#"><img src="http://placekitten.com/200/300" class="active"/></a>
<a href="#"><img src="http://placekitten.com/300/400"/></a>
<a href="#"><img src="http://placekitten.com/350/500"/></a>
<a href="#"><img src="http://placekitten.com/370/600"/></a>
</div>
jQuery的:
function slideSwitch() {
var $active = $('#slideshow a IMG.active');
if ($active.length == 0) $active = $('#slideshow a IMG:last');
// use this to pull the images in the order they appear in the markup
var $next = $active.next().length ? $active.next() : $('#slideshow a IMG:first');
// uncomment the 3 lines below to pull the images in random order
// var $sibs = $active.siblings();
// var rndNum = Math.floor(Math.random() * $sibs.length );
// var $next = $( $sibs[ rndNum ] );
$active.addClass('last-active');
$next.css({
opacity: 0.0
}).addClass('active').animate({
opacity: 1.0
}, 1000, function() {
$active.removeClass('active last-active');
});
};
$(function() {
setInterval(slideSwitch, 5000);
});
答案 0 :(得分:2)
问题是因为您在next()
变量上使用$active
。没有next()
元素,因为每个img
都包含在它自己的a
中。
请改为尝试:
var $next = $active.parent().next("a").find("img").length ? $active.parent().next("a").find("img") : $('#slideshow img:first');
您需要确保淡出/隐藏上一张图片,因为它们的尺寸各不相同。
答案 1 :(得分:0)
替换:
var $next = $active.next().length ? $active.next() : $('#slideshow a IMG:first');
with:
var $next = $active.parent().next().find("img").length ? $active.parent().next().find("img")
: $('#slideshow a IMG:first');