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();
var random = Math.floor(Math.random()*10);
$(".someClass").eq(random).click();
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()
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()
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.
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');
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();