【问题标题】:Execute jQuery queue random number of times执行jQuery队列随机次数
【发布时间】:2013-09-26 18:37:07
【问题描述】:

我正在使用 jQuery queue() 函数对一组图像进行动画处理。我想要的是队列在每次执行时随机出现次数。这是设置队列的JS:

//rotate colors function
function rotateColors() {
    for (var i=0; i<7; i++) {
        isAnimating = true;
        color.delay(50).eq(i).fadeIn(100);
        color.delay(100).eq(i).fadeOut(100);
    }   
}
//rotate colors on button click
button.bind('click', function() {
    color.queue(function(n) {
        rotateColors();
        n();
    });
});

我怎样才能使每次激活此队列时都会执行随机次数?

【问题讨论】:

    标签: javascript jquery queue


    【解决方案1】:

    使用Math.random() 生成随机数。

    function rotateColors() {
        var rnd = Math.floor(Math.random() * 10) + 1; // generate random number between 1 and 10
        for (var i = 0; i < rnd; i++) {
            isAnimating = true;
            color.delay(50).eq(i).fadeIn(100);
            color.delay(100).eq(i).fadeOut(100);
        }   
    }
    //rotate colors on button click
    button.bind('click', function() {
        color.clearQueue().queue(function(n) {
            rotateColors();
            n();
        });
    });
    

    请注意,我将 clearQueue() 添加到 click 处理程序中,以防止在连续单击时队列中堆积大量操作。

    【讨论】:

    • 感谢您的回复。这似乎可以工作,但是现在它随机引入图像而不是按顺序执行它们......
    • 这似乎没有任何改变
    • 我通过在 Math.random() 函数中设置最大最小值来解决这个问题。因为我有 7 张图像每次都必须执行,所以最小值必须设置为 7。我希望队列最多执行 4 次,所以我的最大数量是 28(7*4)。给我这个作为我的最终随机函数:var rnd = Math.floor(Math.random() * (28 - 7) + 1) + 7;——但是现在,队列结束和再次执行之间存在延迟。我怎样才能消除这种延迟?
    猜你喜欢
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多