web-dev-qa-db-fra.com

Comment obtenir un élément aléatoire dans jQuery?

Comment puis-je retourner un élément aléatoire dans jQuery en faisant quelque chose comme $(.class).random.click()?

Donc, si .class a 10 liens, il cliquera aléatoirement sur l’un d’eux.

Voici ce que j'ai fait:

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

Vous pouvez écrire un filtre personnalisé ( pris ici ):

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

Exemple d'utilisation:

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

La même chose mais en plugin:

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

Exemple d'utilisation:

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

Si vous ne voulez pas coder en dur le nombre d'éléments à choisir, ceci fonctionne:

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() vous donne un nombre pseudo-aléatoire compris entre 0 et 1, donc multipliez-le par 10 et arrondissez-le au minimum. Vous obtiendrez ainsi 0 à 9. .eq() est 0 indexé, ainsi vous obtiendrez un élément jQuery aléatoire sur 10. 

9
Yi Jiang

Je suggérerais de le faire de manière jQuery en utilisant .eq() et .trigger().

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

Vous pouvez sélectionner un élément aléatoire par nom de classe à l'aide de la méthode jquery eq()

voir l'exemple ci-dessous.

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