$.rand plugin
originally at: http://www.labs.skengdon.com/rand
by jorgeluis
HTML
<div class="rand">1</div>
<div class="rand">2</div>
<div class="rand">3</div>
<div class="rand">4</div>
<div class="rand">5</div>
<div class="rand">6</div>
<div class="rand">7</div>
<div class="rand">8</div>
<div class="rand">9</div>
<div class="rand">10</div>
<div class="rand">11</div>
<div class="rand">12</div>
CSS
div {
float:left;
margin: 0 5px 5px 0;
width: 25px;
line-height:30px;
text-align:center;
background:#ddd;
border:1px solid #999;
}
.set1 {
background: yellow;
}
.set2 {
background:cyan;
}
.set1.set2 {
background: green;
}
JavaScript
//.rand plugin
//http://www.labs.skengdon.com/rand
;
(function ($) {
$.fn.rand = function (number) {
var array_rand = function (input, num_req) {
var indexes = [];
var ticks = num_req || 1;
var checkDuplicate = function (input, value) {
var exist = false,
index = 0;
while (index < input.length) {
if (input[index] === value) {
exist = true;
break;
};
index++;
};
return exist;
};
while (true) {
var rand = Math.floor((Math.random() * input.length));
if (indexes.length === ticks) {
break;
};
if (!checkDuplicate(indexes, rand)) {
indexes.push(rand);
}
};
return ((ticks == 1) ? indexes.join() : indexes);
};
if (typeof number !== 'number') var number = 1;
if (number > this.length) number = this.length;
var numbers = array_rand(this, number);
var $return = [];
for (var i = 0; i < number; i++) {
$return[i] = this.get(numbers[i]);
};
return $($return);
};
}(jQuery));
$('div').removeClass().addClass('rand');
$('.rand').rand(3).addClass('set1'); //select a random 3 items
$('.rand').rand(5).addClass('set2'); //select a random 5 items
// overlapping items have both classnames