11
votes

JQuery Obtenir un élément aléatoire d'une sélection renvoyée par $ (sélecteur)

Si $ ('. My-Element') correspond à plusieurs éléments, y a-t-il un moyen rapide d'obtenir un élément aléatoire hors de ceux-ci?


1 commentaires

Oui, de la même manière que vous auriez une valeur aléatoire d'un tableau.


3 Réponses :


31
votes
$.fn.random = function() {
  return this.eq(Math.floor(Math.random() * this.length));
}          

$(selector).random();

3 commentaires

Celui-ci est meilleur que le mien.


J'ai remarqué un comportement étrange. Si le sélecteur correspond seulement à 2 éléments, votre réponse aura tendance à (je pense) toujours renvoyer le premier, en raison de l'arrondi sur au sol () . Est ce juste moi?


@WordPressDéveloppeur Parce que la possibilité de sélectionner un élément dans ce cas est de 50% à 50%, il peut sélectionner plusieurs fois le premier ou le deuxième élément, mais il ne sélectionne pas toujours un élément spécifique. jsfiddle.net/tnafk



1
votes
var numElements = $('.my-element').length;
var randomNum = Math.floor(Math.random()*numElements);
//Select your random element
$('.my-element:nth-child(' + randomNum + ')');