4

我想知道是否有办法让 JQuery在标签li内随机选择一个。ul

例子:

<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
</ul>

所以这会发生什么,让我们有一个点击事件,$("ul li:last").trigger('click'); 但请注意它是如何发生的:last,我如何指定它是li随机选择树中的第二个、第三个甚至第四个。

更新:

我注意到其他人建议使用数学,如果我有一个由 MySQL 填充的列表,我不知道会有ul li多少。li

4

4 回答 4

10

利用

Math.floor( (Math.random() * $('ul li').length) + 1 );

这会为您提供一个介于 1 和 of 之间的数字li,然后使用:nth-child()选择器。

你可以在这里了解更多

于 2013-07-25T20:13:43.363 回答
9

这是一个扩展功能

$.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");
于 2013-07-25T20:25:06.440 回答
5
$("ul li:eq(" + Math.floor(Math.random()*4) + ")").trigger('click');

您可以使用Math.random.

random 函数选择一个介于 0 和 1 之间的数字。将其乘以 4 并向下舍入每次都会得到一个介于 0 和 3 之间的数字。

编辑

正如另一个答案中所建议的那样,使用length表示丢失物品数量的属性而不是硬编码 4 可能是一个好主意,但不要加 1,因为您想从 0 开始,因为我们正在处理索引。

于 2013-07-25T20:14:48.937 回答
2

这是另一个解决方案:

var list = $('ul li');
list.eq(parseInt(Math.random()*list.length)).trigger('click');
于 2014-05-02T20:27:11.217 回答