随机和订单组 - Slick.JS

use*_*759 1 html javascript jquery

我使用slick.js库并在我的网页上有以下代码行,这将允许我随机化轮播中幻灯片的顺序.

的JavaScript/jQuery的:

$('.qa').on('init', function(event, slick, currentSlide, nextSlide) {
    // Randomize the slides and then run slick slider
    $.fn.randomize = function(selector) {
        var $elems = selector ? $(this).find(selector) : $(this).children(),
        $parents = $elems.parent();

        $parents.each(function() {
            $(this).children(selector).sort(function(){
                return Math.round(Math.random()) - 0.5;
            }).detach().appendTo(this);
        });

        return this;
    };

    $('.qa').find('.slick-track').randomize('.slick-slide');
});
Run Code Online (Sandbox Code Playgroud)

由于我对JavaScript/jQuery不是很熟悉,除了最后一个(按顺序排列)之外,我怎样才能将幻灯片的顺序随机化(当前它的顺序)?

cod*_*fin 10

slick.js添加了一些幻灯片的克隆,因此我建议您在调用之前随机化幻灯片slick().您也可以保持代码几乎与编写代码完全相同,但添加一个检查以防止最后一张幻灯片被重新排序*.查看包含的示例.

$.fn.randomize = function (selector) {
    var $elems = selector ? $(this).find(selector) : $(this).children(),
        $parents = $elems.parent();

    $parents.each(function () {
        $(this).children(selector).sort(function (childA, childB) {
            // * Prevent last slide from being reordered
            if($(childB).index() !== $(this).children(selector).length - 1) {
                return Math.round(Math.random()) - 0.5;
            }
        }.bind(this)).detach().appendTo(this);
    });

    return this;
};

$(".qa").randomize().slick();
Run Code Online (Sandbox Code Playgroud)
<link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.5.6/slick.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.5.6/slick.min.js"></script>
<div class="qa">
    <div>your content 1</div>
    <div>your content 2</div>
    <div>your content 3</div>
    <div>your content 4</div>
    <div>your content 5</div>
    <div>your content 6</div>
    <div>your content 7</div>
    <div>your content 8</div>
    <div>I am always last</div>
</div>
Run Code Online (Sandbox Code Playgroud)

如果您检查,您将看到最后一张幻灯片始终是最后一张.