如何在jquery中获得随机元素?

问题描述 投票:39回答:7

如何通过执行类似$(.class).random.click()的操作在jQuery中返回随机元素?

因此,如果.class有10个链接,它将随机单击其中之一。

这是我所做的:

var rand_num = Math.floor(Math.random()*$('.member_name_and_thumb_list a').size());
$(".member_name_and_thumb_list a").eq(rand_num).click();
javascript jquery
7个回答
39
投票
var random = Math.floor(Math.random()*10);
$(".someClass").eq(random).click();

57
投票

您可以编写自定义过滤器(taken from here):

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;
    }
});

示例用法:

$('.class:random').click()

与插件相同:

​jQuery.fn.random = function() {
    var randomIndex = Math.floor(Math.random() * this.length);  
    return jQuery(this[randomIndex]);
};

示例用法:

$('.class').random().click()

40
投票

如果您不想对要选择的元素数量进行硬编码,则可以这样做:

things = $('.class');
$(things[Math.floor(Math.random()*things.length)]).click()

9
投票
var rand = Math.floor(Math.random()*10);

$('.class').eq(rand).click();

Math.random()为您提供0到1之间的伪随机数,因此将其乘以10并四舍五入得到0至9。.eq()为0索引,因此这将使您获得一个随机的jQuery元素你有十个


2
投票

我建议使用.eq().trigger()以jQuery方式进行。

$elements.eq(Math.floor(Math.random() * $elements.length)).trigger('click');

1
投票

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

请参见下面的示例。

var len = $(".class").length
var random = Math.floor( Math.random() * len ) + 1;
$(".class").eq(random).click();

0
投票

randojs.com使它成为简单的单行代码:

rando($("a")).value[0].click()

“。value”之所以存在,是因为您还可以选择获取随机jQuery元素的索引。此处的[[0]]将jQuery元素变成普通的JavaScript元素。如果将以下内容添加到html文档的开头,那么您可以轻松地随机执行几乎任何您想做的事情。来自数组的随机值,随机jquery元素,对象的随机属性,甚至在需要时防止重复。

<script src="https://randojs.com/1.0.0.js"></script>
© www.soinside.com 2019 - 2024. All rights reserved.