0

我正在尝试实现“:random”选择器,它从一堆元素中选择一个随机元素。

这是代码:http: //jsfiddle.net/nuSWF/

问题是选择器有时会尝试选择一个不存在的元素(超出索引)。所以我准备了突出显示原因的演示代码,但我不明白为什么。我似乎这是一个错误或什么的。

PS:我知道我可以用其他方法选择一个随机元素,但这次我必须实现这个,也想知道里面发生了什么。

4

1 回答 1

2

您看到的堆栈长度是正常的,它只是在子选择器之前所有元素:random上评估选择器,所以此时的长度为 4。 <a>mydiv1 >

例如,这将产生您期望的结果:

var elements2 = $('#mydiv1>a').filter(':random');

你可以在这里测试一下


所以总体上发生的事情是您的选择器确实过滤到随机<a>元素......但是这些可能会或可能不会>被子选择器进一步过滤掉(如果它们在 a 下<span>,它们会被过滤)。如果您考虑一下,所有选择器都是如此……您执行的任何过滤器都只会减少元素集……它们稍后可能会被更多选择器进一步过滤。

于 2010-12-04T12:17:54.620 回答