javascript - jquery 将元素移动到随机顺序

标签 javascript jquery random gallery

我试图以随机顺序显示一系列图像。但是,在显示所有项目之前,我不希望重复任何单个项目,因此我不想从数组中选择随机图像,而是想获取整个数组,将其随机化,然后从第一个到第二个按顺序选择最后一个元素。这是我的代码:

HTML:

<div id="tout4"
<img src="images/gallery01.jpg" class="img_lg"/>
<img src="images/gallery02.jpg" class="img_lg"/>
<img src="images/gallery03.jpg" class="img_lg"/>
</div>

和当前按顺序选择和显示项目的 javascript:

var galleryLength = $('#tout4 img.img_lg').length;
var currentGallery = 0;
setInterval(cycleGallery, 5000);


function cycleGallery(){

    $('#tout4 img.img_lg').eq(currentGallery).fadeOut(300);

    if (currentGallery < (galleryLength-1)){
        currentGallery++;
    } else {
        currentGallery = 0;
    }

    $('#tout4 img.img_lg').eq(currentGallery).fadeIn(300);
}

那么我该如何重新排列图像的实际顺序,而不仅仅是它们被选中的顺序?

最佳答案

经过多次探索,我决定采用 fisher-yates 算法并将其与 jquery 一起应用,而无需克隆等。

$('#tout4 img.img_lg').shuffle();

/*
* Shuffle jQuery array of elements - see Fisher-Yates algorithm
*/
jQuery.fn.shuffle = function () {
    var j;
    for (var i = 0; i < this.length; i++) {
        j = Math.floor(Math.random() * this.length);
        $(this[i]).before($(this[j]));
    }
    return this;
};

关于javascript - jquery 将元素移动到随机顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5329201/

相关文章:

javascript - 带有 src 和内容的脚本标签是什么意思?

javascript - 从输入框中删除 typeahead.js 事件

javascript - node.js 在控制台显示 "undefined"

javascript - jQuery Ajax 等待每个函数

javascript - 触发 CSS 过渡以锚定在 JavaScript 上

random - 具有 > 64 位种子的伪随机数生成器,用于 52 张纸牌洗牌

javascript - 如何使图像围绕圆圈透明

c# - 随机数概率

java - 为什么 Random.nextInt() %16 有偏差,而 Random.nextInt(16) 却工作得很好?

javascript - 按钮链接到随机 div