【问题标题】:jQuery Get Random Element From a Selection Returned By $(selector)jQuery 从 $(selector) 返回的选择中获取随机元素
【发布时间】:2013-09-02 10:04:40
【问题描述】:

如果$('.my-element') 匹配多个元素,有没有一种快速的方法可以从中获取随机元素?

【问题讨论】:

  • 是的,就像从数组中获取随机值一样。

标签: jquery random


【解决方案1】:
$.fn.random = function() {
  return this.eq(Math.floor(Math.random() * this.length));
}          

$(selector).random();

【讨论】:

  • 这个比我的好。
  • 我注意到一个奇怪的行为。如果选择器仅匹配 2 个元素,由于对 floor() 进行四舍五入,您的答案往往(我认为)总是返回第一个元素。只有我吗?
  • @WordPressDeveloper 因为在这种情况下选择一个元素的可能性是 50%-50%,它可能会多次选择第一个或第二个元素,但并不总是选择一个特定的元素。 jsfiddle.net/tnaFk
【解决方案2】:

要获得均匀分布,您可以将随机数乘以数组计数并使用按位运算符删除小数。

var arr = ['a','b','c'];
arr[~~(Math.random() * arr.length)]; //even odds of a, b, or c

【讨论】:

【解决方案3】:
var numElements = $('.my-element').length;
var randomNum = Math.floor(Math.random()*numElements);
//Select your random element
$('.my-element:nth-child(' + randomNum + ')');

【讨论】:

  • 因为nth-child() selector is 1-based,这不会完全起作用,而您创建的随机例程是从0开始的。人们经常错过这一点,因为在编程中很少看到基于 1 的东西。如果有 4 个项目,您的例程将永远不会选择第 4 个项目。
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 2014-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多