jQuery 选择具有相同类的随机元素

标签 jquery class random element

我有类为“selectElement”的元素。当我单击具有该类的元素时,我“选择”它,并给它另一个类“selectedElements”(如果它还没有)。

但是,我有一个按钮,应该随机选择一定数量(例如 10 个)具有“selectElement”类的元素,并为它们指定“selectedElement”类。

我尝试了类似的答案 -> https://stackoverflow.com/a/1764629/1011539 ,但每次都会返回相同的值...

编辑:在乔恩的帮助下解决了。这是其他有类似问题的用户的代码:)

$("#chooseElementsRand").live("click",function(){
    $(".selectedElements").removeClass("selectedElements");
    var maxNum = parseInt($(".maxNum").html());
    var randomElements = shuffle($(".selectElement")).slice(0,maxNum).addClass("selectedElements");
    $(".selectedNum").html(randomElements.length);
    if(randomElements.length==maxNum) {
        $(".buttonToProceed").removeClass("notShown");
    }
});

最佳答案

每当您想要从 X 中真正随机选取 N 个元素时,解决方案就是 Fisher-Yates shuffleThis page有一个 Javascript 实现(加上基本原理,加上漂亮的动画,所以去看看):

function shuffle(array) {
  var m = array.length, t, i;

  // While there remain elements to shuffle…
  while (m) {

    // Pick a remaining element…
    i = Math.floor(Math.random() * m--);

    // And swap it with the current element.
    t = array[m];
    array[m] = array[i];
    array[i] = t;
  }

  return array;
}

考虑到随机播放,您可以随机选择 X 个元素

var items = shuffle($(".selectElement")).slice(0, X);

<强> Here's a working fiddle玩。

脚注:由于您只对一定数量的随机选择感兴趣,因此不需要像上面的 shuffle 那样无条件地对整个输入数组进行洗牌;您可以只打乱一小部分,然后使用 .slice 将其切掉并使用它。我将把这个作为练习;小心不要错误地捕获*未*洗牌的部分!

关于jQuery 选择具有相同类的随机元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11186631/

相关文章:

javascript - jQuery 的 $(selector).position().left 有时在 Firefox、Chrome 浏览器中失败

php - 在类声明中使用外部对象 - PHP

java - 如何将 ArrayList 类中的变量设置到 Main 类?

matlab - 具有随机变量条目的矩阵的合适数据结构是什么?

javascript - 如何实现悬停时换图?

通过 jQuery 的 load() 方法加载整个页面时,JavaScript 不会在 Safari 中执行

未找到 PHP 类

c# - 随机移动物体而不在墙内 - Unity 5

python - 生成随机 float ,总和为 1,具有最小值

javascript - 使用 Javascript 确定网站是公开的还是私有(private)的