我想知道是否有办法让JQuery在li
标记内随机选择ul
。
示例:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
所以这就是会发生什么,让我们点击事件$("ul li:last").trigger('click');
,但注意它是如何:last
,我怎么能指定它是选择第二个,第三个,甚至是第四个{ {1}}随机地在树中。
更新:
我注意到其他建议使用数学,如果我有一个由MySQL填充的li
列表怎么办,我不知道会有多少ul li
。
答案 0 :(得分:9)
使用
Math.floor( (Math.random() * $('ul li').length) + 1 );
这会为您提供介于1和li
之间的数字,然后使用:nth-child()
选择器。
您可以详细了解here
答案 1 :(得分:8)
这是一个扩展功能
$.fn.random = function()
{
var ret = $();
if(this.length > 0)
ret = ret.add(this[Math.floor((Math.random() * this.length))]);
return ret;
};
这就是你如何使用它
$("ul li").random().trigger("click");
答案 2 :(得分:5)
$("ul li:eq(" + Math.floor(Math.random()*4) + ")").trigger('click');
您可以使用Math.random
。
随机函数选择0到1之间的数字。将它乘以4并向下舍入将得到每次0到3之间的数字。
修改
正如在另一个答案中所建议的那样,使用代表丢失项目数量的length
属性而不是硬编码4可能是一个好主意,但是因为我们想要从0开始,所以不要添加1处理指数。
答案 3 :(得分:2)
这是另一种解决方案:
var list = $('ul li');
list.eq(parseInt(Math.random()*list.length)).trigger('click');