2017-07-13 25 views
1

我對jQuery非常陌生,我已經很難做到這一點。我有幾個Div,其中的類「.figures」被設置爲「display:none;」我想要像現在一樣的效果,但沒有顯示連續兩次或更多的相同div。我必須以某種方式存儲號碼,所以我可以檢查它是否與以前一樣,對不對?我怎樣才能做到這一點?如何防止此代碼向我顯示連續兩次或多次隨機選擇的div?

下面的代碼:

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

回答

0

是的,你可以存儲elemets的數字,但也有另一種方式。

您可以添加「.already使用的」一個元素的類被褪:

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

那麼你應該只選擇.figures元素,而.already-used類:

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

你也可以刪除。

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

或者你可以使用更多的類和改變他們通過一步週期從更高的步驟,週期降低:如果u要重複相同的元素,但不是2倍的列的選擇var fadeDivs = $('.figures:not(.already-used)');already-used類權類號如: .already-used-3更改爲.already-used-2,然後到。 already-used-1,如果你不想每四次更頻繁地重複同一個元素,那麼就沒有課程。該選擇是:

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

我不能使用'$ removeClass(' 已經使用');'所以我不得不重寫它這樣:'EL = fadeDivs.removeClass ('.already-used');' – SvenDerPirat

+0

爲什麼不能?它應該從.figers elemt中刪除所有.already-used類,並且忽略沒有該類的意思。 – Incredible

+0

這將工作,如果我使用另一個代碼結構。但是因爲我使用'var fadeDivs = $('。figures'),'(看看**,**)我無法使用你的版本並且不得不像其他的那樣使用它'el =' 你知道我現在的意思是? – SvenDerPirat

0

我繼續着「不可思議」的答案,現在讓我自己的答案,因爲我不得不調整自己的代碼一點與我的代碼工作:這是由它的解決方案爲我工作:( '數字 ')。

(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); 
})(); 
相關問題