首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机和顺序Divs - Slick.JS

随机和顺序Divs - Slick.JS
EN

Stack Overflow用户
提问于 2015-07-16 16:34:48
回答 2查看 8.3K关注 0票数 1

我正在使用slick.js库,我的网页上有以下代码行,这将允许我随机选择旋转木马中幻灯片的顺序。

JavaScript/jQuery:

代码语言:javascript
复制
$('.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');
});

由于我对JavaScript/jQuery不太熟悉,除了最后一个幻灯片(按其顺序排列)的之外,我如何能够随机地排列我的幻灯片的顺序(目前是这样的)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-16 19:50:14

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

代码语言:javascript
复制
$.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();
代码语言:javascript
复制
<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>

如果你检查一下,你会发现最后一张幻灯片总是最后一张。

票数 12
EN

Stack Overflow用户

发布于 2015-07-16 17:37:57

我建议获得除最后一个条目之外的所有数组,将其随机化,然后将最后一个条目推到新数组上。

如何洗牌,阅读这里

假设laxt条目是您仍然希望最后显示的条目,则可以(伪代码)

代码语言:javascript
复制
var array = [allmyelems];
var last = array.pop();
shuffle(array);
array.push(last);

function shuffle(array) {
    //function from above link
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31459832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档