Рандомизировать первое изображение на этом слайд-шоу? - PullRequest
2 голосов
/ 10 июля 2011

У меня есть это слайд-шоу на основе jquery, и оно отлично работает, автор даже установил параметр рандомизации, который мне и был нужен.Он отлично работает за исключением , что он не рандомизирует первый слайд.Есть идеи?Спасибо:)

Вот js: (или перейдите на исходную страницу для получения дополнительной информации)

function slideSwitch() {
    var $active = $('#slideshow DIV.active');

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

    // use this to pull the divs in the order they appear in the markup
   // var $next =  $active.next().length ? $active.next()
    //    : $('#slideshow DIV:first');

    // uncomment below to pull the divs randomly
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}, 1000, function() {
            $active.removeClass('active last-active');
        });
}

$(function() {
    setInterval( "slideSwitch()", 20000 );
});

HTML:

<div id="slideshow">
    <div class="active">
        <img src="img/img1.jpg" />
    </div>
    <div>
        <img src="img/img2.jpg" />
    </div>
    <div>
        <img src="img/img3.jpg" />
    </div>
</div>

Ответы [ 2 ]

1 голос
/ 10 июля 2011

Похоже, что он случайным образом выбирает братьев и сестер на активном слайде, не включая текущий активный слайд, который является первым при загрузке страницы. Вы можете исправить код плагина или быть ленивым, как я бы, и рандомизировать эти изображения перед инициализацией слайд-шоу. Используйте плагин, подобный приведенному в ответе: Произведите рандомизацию последовательности элементов div с помощью jQuery

0 голосов
/ 10 июля 2011

Попробуйте рандомизировать что-то вроде:

 function slideSwitch() {
        var $active = $('#slideshow div').eq(Math.floor(Math.random() * $('#slideshow div').length);
        $(".active").removeClass("active");
        $active.addClass("active");

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

        // use this to pull the divs in the order they appear in the markup
       // var $next =  $active.next().length ? $active.next()
        //    : $('#slideshow DIV:first');

        // uncomment below to pull the divs randomly
    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}, 1000, function() {
                $active.removeClass('active last-active');
            });
    }

    $(function() {
        setInterval( "slideSwitch()", 20000 );
    });
...