我正在尝试实现“:random”选择器,它从一堆元素中选择一个随机元素。
这是代码:http: //jsfiddle.net/nuSWF/
问题是选择器有时会尝试选择一个不存在的元素(超出索引)。所以我准备了突出显示原因的演示代码,但我不明白为什么。我似乎这是一个错误或什么的。
PS:我知道我可以用其他方法选择一个随机元素,但这次我必须实现这个,也想知道里面发生了什么。
我正在尝试实现“:random”选择器,它从一堆元素中选择一个随机元素。
这是代码:http: //jsfiddle.net/nuSWF/
问题是选择器有时会尝试选择一个不存在的元素(超出索引)。所以我准备了突出显示原因的演示代码,但我不明白为什么。我似乎这是一个错误或什么的。
PS:我知道我可以用其他方法选择一个随机元素,但这次我必须实现这个,也想知道里面发生了什么。
您看到的堆栈长度是正常的,它只是在子选择器之前的所有元素:random
上评估选择器,所以此时的长度为 4。 <a>
mydiv1
>
例如,这将产生您期望的结果:
var elements2 = $('#mydiv1>a').filter(':random');
所以总体上发生的事情是您的选择器确实过滤到随机<a>
元素......但是这些可能会或可能不会>
被子选择器进一步过滤掉(如果它们在 a 下<span>
,它们会被过滤)。如果您考虑一下,所有选择器都是如此……您执行的任何过滤器都只会减少元素集……它们稍后可能会被更多选择器进一步过滤。