1

私は次のjQueryを持っています:

            var $active = $('#slideshow li.active');

            if ( $active.length == 0 ) $active = $('#slideshow li:last');

            // use this to pull the images in the order they appear in the markup
            var $next =  $active.next().length ? $active.next()
                : $('#slideshow li: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}, 500, function() {
                    $active.removeClass('active last-active');
                });

逆方向に循環できるようにこれを変更するにはどうすればよいですか?

私はここまで来ましたが、最初の要素から最後の要素に戻ることはありません。私が見逃しているかなり単純なものがあるに違いありませんが、私は本当にそれに指を置くことができません.

            var $active = $('#slideshow li.active');

            if ( $active.length == 0 ){ $active = $('#slideshow li:last');}

            // use this to pull the images in the order they appear in the markup
            var $next =  0 ? $active.prev()
                : $('#slideshow li: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}, 500, function() {
                    $active.removeClass('active last-active');
                });
4

1 に答える 1

1

現在のソリューションは、要素の後にactive要素があるかどうかを確認します。これを変更して、要素の前にあるかどうかを確認します。active元のフォールバックは、 内の最初のリスト項目を選択することです#slideshow。代わりに最後のものを選択します。

var $next = $active.prev().length ? $active.prev() : $('#slideshow li:last');

三項演算子に慣れていない場合は、基本的に if ステートメントを書くことと同じです。

// If there are previous elements
if ( $active.prev().length > 0 ) {
    // The next element will be the previous element
    $next = $active.prev();
} else {
    // The next element will be the last list item in #slideshow
    $next = $("#slideshow li:last");
}
于 2012-05-28T16:19:08.853 に答える