我想在输入元素数组中随机选择随机数量的输入。
如果我使用以下方法我可以得到一个随机项目
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 =。
答案 0 :(得分:7)
您可以将jQuery的.filter()
方法与函数一起使用:
$('div').filter(function(){
return (Math.round(Math.random()) == 1);
}).css({background: 'red'});
答案 1 :(得分:4)
您当前正在检查索引是否等于随机数。也许最好为每个输入生成一个随机数,并检查它是否大于1或更小。所以随机化一个介于0和2之间的数字,例如:
jQuery.extend(jQuery.expr[":"],
{
random: function(a, i, m, r) {
return Math.random() > 0.5;
}
});
alert( $("input:random").length );
此外,如果你从一个元素中得到一个道具,它只能从第一个得到它。
答案 2 :(得分:1)
我建议你回答一个关于如何从数组count
中随机获取arr
个元素的问题的非jQuery答案
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
值