Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get random element in jquery?

How can I return a random element in jQuery by doing something like $(.class).random.click()?

So, if .class had 10 links, it would randomly click one of them.

Here is what I did:

var rand_num = Math.floor(Math.random()*$('.member_name_and_thumb_list a').size()); $(".member_name_and_thumb_list a").eq(rand_num).click(); 
like image 386
Josh Avatar asked Sep 01 '10 03:09

Josh


2 Answers

You can write a custom filter (taken from here):

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;     } }); 

Example usage:

$('.class:random').click() 

The same thing but as a plugin instead:

​jQuery.fn.random = function() {     var randomIndex = Math.floor(Math.random() * this.length);       return jQuery(this[randomIndex]); }; 

Example usage:

$('.class').random().click() 
like image 79
Anurag Avatar answered Oct 22 '22 11:10

Anurag


If you don't want to hard code the number of elements to choose from, this works:

things = $('.class'); $(things[Math.floor(Math.random()*things.length)]).click() 
like image 31
Moss Avatar answered Oct 22 '22 10:10

Moss