如何使用jQuery实现类似于$(.class).random.click()
这样的随机返回元素功能?
比如,如果.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();
如何使用jQuery实现类似于$(.class).random.click()
这样的随机返回元素功能?
比如,如果.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();
你可以编写一个自定义过滤器(来自此处):
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()
Uncaught TypeError: Cannot read property 'length' of undefined
错误。 - cwd如果您不想硬编码要选择的元素数量,可以使用以下方法:
things = $('.class');
$(things[Math.floor(Math.random()*things.length)]).click()
var n_elements = $(".someClass").length;
var random = Math.floor(Math.random()*n_elements);
$(".someClass").eq(random).click();
TypeError: Object #<Object> has no method 'Round'
,代码为var random = Math.round(Math.random()*10);
。 - Mike$(".someClass").length
替换 10
。否则,如果链接数量发生变化,代码将会出错。 - Raptivar rand = Math.floor(Math.random()*10);
$('.class').eq(rand).click();
Math.random()
可以获得一个介于0和1之间的伪随机数,因此将其乘以10并向下取整可获得0到9之间的数字。.eq()
从0开始计数索引,因此这将从你拥有的10个jQuery元素中获取一个随机元素。
$elements.eq(Math.floor(Math.random() * $elements.length)).trigger('click');
eq()
按类名选择随机项。var len = $(".class").length
var random = Math.floor( Math.random() * len ) + 1;
$(".class").eq(random).click();
randojs.com让这变成了一个简单的一行代码:
rando($("a")).value[0].click()
<script src="https://randojs.com/1.0.0.js"></script>