【问题标题】:How can I prevent this code to show me a randomly selected div twice or more in a row?如何防止此代码连续两次或多次向我显示随机选择的 div?
【发布时间】:2017-07-13 13:37:28
【问题描述】:

我对 jQuery 很陌生,而且我已经很难做到这一点。我有几个带有“.figures”类的Div,它们设置为“display:none;”我想有和现在一样的效果,但不连续显示相同的 div 两次或更多。我必须以某种方式存储号码,所以我可以检查它是否和以前一样,对吧?我该怎么做?

代码如下:

(function randomFade() {
var fadeDivs = $('.figures'),
    el = fadeDivs.eq(Math.floor(Math.random() * fadeDivs.length));
    el.fadeIn('1000').delay(2000).fadeOut('1000',randomFade); 
})();

【问题讨论】:

    标签: jquery random


    【解决方案1】:

    是的,您可以存储元素的数量,但还有另一种方法。

    您可以将“.already-used”类添加到正在淡入的元素:

    el.fadeIn('1000').addClass('.already-used').delay(2000).fadeOut('1000',randomFade); 
    

    那么你应该只选择没有.already-used类的.figures元素:

    var fadeDivs = $('.figures:not(.already-used)');
    

    如果你想重复相同的元素但不是连续重复两次,你也可以在选择器 var fadeDivs = $('.figures:not(.already-used)'); 之后删除 .already-used 类:

    $('.figures').removeClass('.already-used');
    

    或者您可以使用更多类并逐步更改它们,从高到低的类号逐个循环,例如: .already-used-3 更改为 .already-used-2,然后更改为 .already-used-1,如果您不想每四次更频繁地重复相同的元素,则更改为 no class。选择器将是:

    var fadeDivs = $('.figures:not(.already-used-3):not(.already-used-2):not(.already-used-1)');
    

    【讨论】:

    • 我不能使用$('.figures').removeClass('.already-used');,所以我不得不像这样重写它:el = fadeDivs.removeClass('.already-used');
    • 为什么不呢?它应该从拥有它的 .figers 元素中删除所有 .already-used 类,并忽略没有该类的元素。
    • 如果我使用另一种代码结构,这将起作用。但由于我使用var fadeDivs = $('.figures'),(查看),我无法使用您的版本,不得不像其他el = 一样对其进行调整。你现在知道我的意思了吗?
    【解决方案2】:

    我继续回答“令人难以置信”,现在做出自己的回答,因为我必须稍微调整他的代码才能使用我的代码:这是使它对我有用的解决方案:

    (function randomFade() {
       var fadeDivs = $('.figures:not(.already-used)'),
       el = fadeDivs.removeClass('.already-used');
       el = fadeDivs.eq(Math.floor(Math.random() * fadeDivs.length));
       el.fadeIn('1000').addClass('.already-used').delay(2000).fadeOut('1000',randomFade);
    })();
    

    【讨论】:

      猜你喜欢
      • 2014-05-08
      • 2012-06-28
      • 1970-01-01
      • 2017-04-30
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多