选择随机li元素-JQuery
我想知道是否有办法让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,我如何指
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');