2011-11-29 99 views
4

我要挑隨機輸入元素的數組的輸入隨機數項隨機數..
如果我使用下面的方法,我可以得到一個隨機項如何挑選隨機陣列中的

jQuery.jQueryRandom = 0; 
jQuery.extend(jQuery.expr[":"], 
{ 
    random: function(a, i, m, r) { 
    if (i == 0) { 
     jQuery.jQueryRandom = Math.floor(Math.random() * r.length); 
    }; 
    return i == jQuery.jQueryRandom; 
} 
}); 

$("input:random").prop('id') 

但是我想隨機選擇數字i =在數組中隨機挑選的項目。

回答

7

您可以使用jQuery的.filter()方法與功能:

$('div').filter(function(){ 
    return (Math.round(Math.random()) == 1); 
}).css({background: 'red'}); 

jsFiddle example

+0

完美答案:-) – Exception

4

您目前正在檢查,如果該指數等於隨機數。也許最好爲每個輸入生成一個隨機數,並檢查它是否大於1或更小。所以隨機數字0之間和2類似:

jQuery.extend(jQuery.expr[":"], 
{ 
    random: function(a, i, m, r) { 
    return Math.random() > 0.5; 
} 
}); 

alert($("input:random").length); 

此外,如果你從一個元素獲得一個道具,它只會從第一個得到它。

1

我提出一個非jQuery的答案,你如何從一個數組得到count元件中隨機詢問arr

var pickRandom = function (arr, count) { 
    var out = [], i, pick, clone = arr.slice(0, arr.length); 
    for (i = 0; i < count; i ++) { 
    pick = Math.floor(Math.random() * clone.length); 
    if (clone[pick] !== undefined) { 
     out.push(clone[pick]); 
     clone.splice(pick, 1); 
    } 
    } 
    return out; 
}; 

此功能可以確保原始數組保存和正確處理undefined