选择随机li元素-JQuery

选择随机li元素-JQuery,jquery,Jquery,我想知道是否有办法让JQuery在ul标记中随机选择li 例如: <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> 一, 二, 三, 四, 下面是将会发生的事情,让我们有一个点击事件,所以,$(“ul li:last”).trigger('click')但是请注意它是如何具有:last,我如何指

我想知道是否有办法让JQuery在
ul
标记中随机选择
li

例如:

<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

使用

Math.floor( (Math.random() * $('ul li').length) + 1 );
这将为您提供一个介于1和
li
之间的数字,然后使用
:nth-child()
选择器

你可以了解更多

您可以使用
Math.random

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

编辑


正如在另一个答案中所建议的,最好使用表示丢失项目数量的
length
属性,而不是硬编码4,但不要添加1,因为我们处理的是索引,所以您希望从0开始。

这里是一个扩展函数

$.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");

下面是另一个解决方案:

var list = $('ul li');
list.eq(parseInt(Math.random()*list.length)).trigger('click');

我比另一个更喜欢这个答案,因为它通过计算li标签的数量自动确定乘数。我能不能给Math.floor等于多少指定一个值?不要加1,因为我们在处理索引。@DavidBringa你可以,但就像Ben Harrison说的,通过这种方式,您可以更改li的数量,但仍然有效。@DavidBiga是的,任何兄弟姐妹,只需使用适当的选择器。这很有效,但是,由于4是硬编码的,所以li标记的数量一发生变化就会中断。@DavidBiga您不需要知道,因为您可以在按照另一个答案中的建议呈现
长度后,使用JQuery获取
长度。
var list = $('ul li');
list.eq(parseInt(Math.random()*list.length)).trigger('click');