2013-12-12 37 views
1

我想弄清楚如何構建forEach循環與未知數量的元素。隨機挑一個,對其執行XYZ。使其可見。從考慮中刪除該元素。重複從剩餘元素中挑選一個隨機數。未知元素數jquery循環

我到目前爲止的想法是製作一個元素ID的數組。使用array.forEach()來遍歷它們。從數組中隨機選擇一個元素。執行XYZ然後從數組中刪除選定的ID,然後重複,直到forEach到期。

所以首先,如果你能想到更好的方式,我願意接受任何想法。

在我打我的第一個路障之前,我還沒有走得太遠,那是動態生成id的數組。

我得到的元素個數(他們將永遠是父母讓您無後顧之憂那裏的孩子們。

//get count of all elements and loop till all are visible 
var elementCount = $('#PartialsContainer').children().size(); 

接下來我轉到生成我的數組,但它會導致一個元素的數組中持有的價值elementCount中。

//create array of quantity 
var elementArray = $.makeArray(elementCount); 

所以,我可以通過做讓他們的ID單元這樣一個循環,但肯定有更好的辦法?

for (var i = 0; i < elementCount; i++) 
{ 
    elementArray.push($element[i] //its pseudo code I know it won't work); 
} 

非常感謝您對改進此設計/方法的任何想法/提示。

+0

你能不能在jQuery對象循環? – cgatian

+2

'size()'不推薦使用'length'屬性 – charlietfl

+1

'$('#PartialsContainer')。children()。each(function(){...});' – Malk

回答

2

嘗試像

var $els = $('#PartialsContainer').children(); 

while($els.length){ 
    var $el = $els.eq(Math.floor(Math.random() * $els.length)); 
    //do something with $el 
    $els = $els.not($el); 
} 

演示:Fiddle

+0

.eq()對我來說是新的,閱讀它顯示它正是我所期待的。然後Math.random()產生一個介於0到1之間的隨機數,然後乘以它並最終從地板上彈出它。非常感謝你! – GPGVM