0
4

1 に答える 1

0

作成したコードに構文エラーがいくつかあります。

does this line of code "var count = showing.parent().parent();" 
point to the div #slider

はい、スライダーdivを指しています。

より良い ..showing.closest('div');

これは意味がないと思います

showing.parent().parent().next().children(':second');

これにより、上記のHTMLでは存在しない2番目の子が取得されます。next div

またclosest('#Slider').children(':second');、意味がありません。

フルコード..いくつかの仮定の後

function slideShow() {

    var showing = $('#slider .is-showing');
    var count = showing.closest('div');

    var next = count.next('div').length 
                ? showing.closest('div').next('div').children(':first') 
                :  count.find('img');


    showing.fadeOut(800, function() {
        next.fadeIn(800).addClass('is-showing');
    }).removeClass('is-showing');

    setTimeout(slideShow, 5000);
}​

アップデート

次のdivが存在しないとあなたは言いました

つまり.children(':second'); 、各divにはアンカー要素である子が1つしかないため、意味がありません(divの次ではありません)。.children()は、ネストされた子ではなく、直接の子を取得します。

最初にクラスが「表示中」の画像を表示し、次に.next()を使用して次のimg要素に移動しました

nextはすぐに兄弟を取得するため、これは上記のHTMLでは機能しません。画像に対して.next()を実行すると、画像の兄弟がないため、何も取得されません。

フェード機能内でクラス(is-showing)を追加および削除するのはなぜですか

フェード関数は非同期であるため、コールバックで行う必要があります。それ以外の場合は、すぐに反映されます。

于 2012-11-13T00:48:44.740 に答える