0

順序付けされていないリスト(LI)の画像を回転させるために使用しているスクリプトがあります。ページ上に参照されたクラスの単一のインスタンスがある場合、スクリプトは正常に機能します。ただし、回転コンポーネントのインスタンスが2つある場合、2番目のインスタンスは応答しません。

解決策は、2番目のローテーターがスクリプトを取得するまでスクリプトを実行し続けることだと思いますが、よくわかりません。運が悪かったので、いくつかの変更を試しました。現在のスクリプトは次のとおりです。

function theRotator() {
    //Set the opacity of all images to 0
    $('div.rotator ul li').css({opacity: 0.0});

    // Remove images that only show in main-content
    $('div.rotator ul li.page-only').remove();

    //Get the first image and display it (gets set to full opacity)
    $('div.rotator ul li:first').css({opacity: 1.0});

    //Call the rotator function to run the slideshow, 6000 = change to next image after 6 seconds
    setInterval('rotate()',4000);
}

function rotate() { 
    //Get the first image
    var current = ($('div.rotator ul li.show')?  $('div.rotator ul li.show') : $('div.rotator ul li:first'));

    if ( current.length == 0 ) current = $('div.rotator ul li:first');

    //Get next image, when it reaches the end, rotate it back to the first image
    var next = ((current.next().length) ? ((current.next().hasClass('show')) ? $('div.rotator ul li:first') :current.next()) : $('div.rotator ul li:first'));

    //Un-comment the 3 lines below to get the images in random order

    //var sibs = current.siblings();
    //var rndNum = Math.floor(Math.random() * sibs.length );
    //var next = $( sibs[ rndNum ] );


    //Set the fade in effect for the next image, the show class has higher z-index
    next.css({opacity: 0.0})
    .addClass('show')
    .animate({opacity: 1.0}, 500);

    //Hide the current image
    current.animate({opacity: 0.0}, 1000)
    .removeClass('show');

};
setTimeout(function(){
    $(document).ready(function() {      
        //Load the slideshow
        theRotator();
        $('div.rotator').fadeIn(500);
        $('div.rotator ul li').fadeIn(500); // tweek for IE
    });
}, 500);
4

1 に答える 1

0

:firstおそらく、セレクターを。に置き換える必要があります:first-child:firstのよう.first()に動作し、1つの要素のみを選択しますが:first-child、CSSと同等の動作をします。

于 2012-10-08T16:25:23.163 に答える