Question

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();
 45  63571  45
1 Jan 1970

Solution

 62

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()
2010-09-01

Solution

 47

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()
2013-02-01