2

スライドショーに問題があります (問題は、このSimple jQuery Slideshow Image Moving Downwards for a Split Secondとほぼ同じですが、私にとってはうまくいきません)。問題はnext()通話にあります。一種のスリープ機能を作ろうとしましたが、そこで呼び出すことができません。

これが私のコードです:

CSS:

.slidePromo { 
    margin-top: 20px;
    margin-bottom: 20px;
    position: relative; 
    width: 700px; 
    height: 300px; 
    padding: 10px; 
    box-shadow: 0 0 20px rgba(0,0,0,0.4); 
    overflow: hidden;
}

.slideshow > div { 
    position: absolute; 
    top: 0px; 
    left: 0px; 
    right: 0px; 
    bottom: 0px; 
    overflow: auto;
}

HTML:

<div id="slidePromo" class="slidePromo">
    <div><img src="./promos/banner.jpg"></div>
    <div><img src="./promos/next.jpg"></div>
    <div><img src="./promos/splash.jpg"></div>
</div>

JQuery

function slider(id, fade, timer) {
    $("#" + id + " > div:gt(0)").hide();
    setInterval(function() { 
    $('#' + id + ' > div:first')
        .fadeOut(fade)
        .next()
        .fadeIn(fade)
        .end()
        .appendTo("#" + id);
    },  timer);
}

何か案が?ありがとうございます。

4

2 に答える 2

2

これを試して:

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

フェードアウトでコールバック関数を使用すると、もう一方を追加する前に完全になくなるまで待機します。

于 2013-04-04T16:13:45.787 に答える
0

css には classslideShowがあるためかもしれませんが、ラッパーには class がありますslidePromo。この css ブロックは適用されません。クラスの変更 - jquery を変更しなくても機能します。

PS jquery コードはひどいです。これを試して:

function slider(id, fade, timer) {
    var holder = $('#' + id);
    holder.find(" > div:gt(0)").hide();
    setInterval(function() { 
    holder.find(' > div:first')
        .fadeOut(fade)
        .next()
        .fadeIn(fade)
        .end()
        .appendTo(holder);
    },  timer);
}

これは小さなアップグレードです。

于 2013-04-04T16:22:52.237 に答える