Jquery 幻灯片未正确隐藏图像

Jquery slideshow not hiding images correctly

我在 HTML5 活页簿设计中有一个图像幻灯片。当我在空白网页上使用代码时,它工作正常。但在动画书中,幻灯片中的最后一张图片(有时与最后一张图片不同)仍显示在活动图片下方,而不是被隐藏。

每张图片只会出现一秒钟,然后每次都会显示最后一张图片。一旦幻灯片循环遍历每个图像,它就可以正常工作。

关于为什么会发生这种情况有什么想法吗?

这是我的 HTML 书:

<div id="outside-content">
<div id="zoom-viewport">
<div id="flipbook">
<div class="hard" style="background-image:url(image.png)"></div>

<div class="hard" id="slideshow" style="margin:0px">
<div><img src="image.jpg"></div>
<div><img src here</div>
<div><img src here</div>
..... many more divs with images....
</div><!-- slideshow end-->

<div>Page</div><!-- title page -->
<div>Page</div>
... more pages ...
</div><!-- flipbook-->
</div><!--zoom-viewport-->
</div><!-- outside-content-->

<script type="text/javascript">
$("#flipbook").turn({
    width: 950,
    height: 615,
    autoCenter: true
});
</script>

这里是幻灯片的Jquery:

$("#slideshow > div:gt(0)").hide();

setInterval(function() { 
$('#slideshow > div:first')
.fadeOut(2000)
.next()
.fadeIn(2000)
.end()
.appendTo('#slideshow');
},  3000);

和 CSS:

#slideshow { 
margin: 30px 10px; 
position: relative; 
width: 470px; 
height: 595px; 
padding: 0px; 
box-shadow: 0 0 20px rgba(0,0,0,0.4);
}

#slideshow > div { 
position: absolute; 
top: 0px; 
left: 0px; 
right: 0px; 
bottom: 0px;
}

我试过将 gt(0) 中的数字更改为 -1 或 1,并尝试删除“>”但没有任何变化。

您尝试过使用其他方式吗?如果没有请试试这个。

<div id = "slider">
<ul class="slides">
    <li class="slide"><img src = "resources/banner1.jpg"/></li>
    <li class="slide"><img src = "resources/banner2.jpg"/></li>
    <li class="slide"><img src = "resources/banner3.jpg"/></li>
</ul>
</div>

JQuery代码:

$(function() {
var width = 693;
var animationSpeed = 500;
var pause = 3000;
var $slider = $('#slider');
var $slideContainer = $('.slides', $slider);
var interval;
var sliderUlWidth = slideCount * slideWidth;
var clickcount = 0;
$("#icon").addClass("pauseicon");

$('#slider ul').css({ width: sliderUlWidth, marginLeft: - slideWidth });

$('#slider ul li:last-child').prependTo('#slider ul');


function startSlider() {
    interval = setInterval(function() {
        nextSlide();}, pause);
}

function nextSlide() {
    $('#slider ul li:first-child').appendTo('#slider ul');
    $('#slider ul').css('margin-left', 0);
    var value = parseInt($(".pager").text(), 10) + 1;
    if(value === 4){ value = 1;}
    $(".pager").text(value + "/3");
    $slideContainer.animate({'margin-left': '-693px'}, animationSpeed);

}

startSlider();});

CSS:

#slider {
      width: 693px;
      height: 434px;
      overflow: hidden; }
 #slider .slides {
        display: block;
        width: 2079px;
        height: 434px;
        margin: 0 auto;
        padding: 0; }
    #slider .slide {
        float: left;
        list-style-type: none;
        width: 693px;
        height: 434px; }

通过正常调用 javascript 来包含脚本。 <script type = "text/javascript" src = "slider.js"></script>,将脚本调用放在 </body> 标记之前。

隐藏所有 div 然后重新开始

 $("#slideshow div").hide();

在我将 slideshow javascript 包装在函数中之前也遇到过问题。

$(function() {
    $("#slideshow > div:gt(0)").hide();
    setInterval(function() { 
        $('#slideshow > div:first')
            .fadeOut(2000)
            .next()
            .fadeIn(2000)
            .end()
            .appendTo('#slideshow');
     },  3000);
});

然后就完美运行了!