jQuery的选择具有相同的类随机元素(jQuery select random elements

2019-06-25 17:31发布

我有类“selectElement”元素。 当我元素上单击具有一流的,我“选择”它,并给它另一个阶级“selectedElements”,如果它不已经拥有了它。

但是,我有类“selectElement”元素的一个按钮,应随机选择一定数量(如10),并给予他们“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");
    }
});

Answer 1:

每当你想随意挑N个元素真的出X的,该解决方案是费雪耶茨洗牌 。 此页面有一个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);

这里的工作小提琴一起玩。

脚注:因为你只在一定量的随机挑选的兴趣,就没有必要无条件洗牌整个输入数组shuffle上面做; 你可以洗牌只有一小部分,然后用.slice削减其关闭,并使用它。 我要离开这个作为一个练习; 要小心,不要错误地抢*联合国*洗牌的一部分!



Answer 2:

像这样的工作(通过点击一个元素上触发它)

$(".selectElement").on("click", function() {
    var randomElements = $(".selectElement").get().sort(function() {
        return Math.round(Math.random()) - 0.5;
    }).slice(0, 5);
    $(randomElements).css('border', '1px solid red');
});​

http://jsfiddle.net/rKFfm/



Answer 3:

您可以使用jQuery的方法,通过类名随机选择项eq()

见例如波纹管。

var len = $(".someClass").length;
var random = Math.floor( Math.random() * len ) + 1;
$(".someClass").eq(random).css("background-color", "yellow");


文章来源: jQuery select random elements with same class