ti-enxame.com

Como obter um elemento aleatório no jquery?

Como posso retornar um elemento aleatório no jQuery fazendo algo como $(.class).random.click()?

Então, se .class tivesse 10 links, ele aleatoriamente clicaria em um deles.

Aqui está o que eu fiz:

var Rand_num = Math.floor(Math.random()*$('.member_name_and_thumb_list a').size());
$(".member_name_and_thumb_list a").eq(Rand_num).click();
37
Josh
var random = Math.floor(Math.random()*10);
$(".someClass").eq(random).click();
36
Marko

Você pode escrever um filtro personalizado ( tirado daqui ):

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

Exemplo de uso:

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

A mesma coisa, mas como um plugin:

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

Exemplo de uso:

$('.class').random().click()
55
Anurag

Se você não quiser codificar o número de elementos para escolher, isso funciona:

things = $('.class');
$(things[Math.floor(Math.random()*things.length)]).click()
39
Moss
var Rand = Math.floor(Math.random()*10);

$('.class').eq(Rand).click();

Math.random() obtém um número pseudo-aleatório entre 0 e 1, então multiplicá-lo por 10 e arredondá-lo leva para 0 a 9. .eq() é 0 indexado, então você obterá um elemento jQuery aleatório dentre os 10 que você possui. 

9
Yi Jiang

Eu sugiro fazer isso da maneira jQuery usando .eq() e .trigger().

$elements.eq(Math.floor(Math.random() * $elements.length)).trigger('click');
2
lmeurs

Você pode selecionar um item aleatório por nome de classe usando o método jquery eq() 

veja o exemplo abaixo.

var len = $(".class").length
var random = Math.floor( Math.random() * len ) + 1;
$(".class").eq(random).click();
1
Nishad Up