2010-12-04 36 views
0

我想实现“:随机”选择器,它从一堆元素中选择一个随机元素。jQuery自定义过滤器问题:元素堆栈太多

下面的代码:http://jsfiddle.net/nuSWF/

的问题是选择器有时尝试选择不存在(出索引的)的元件。所以我准备了强调原因的演示代码,但我不明白为什么。我似乎是一个错误或什么的。 P:我知道我可以用其他方法选择一个随机元素,但这次我必须实现这个,也想知道里面发生了什么。

+0

我不确定,但不是`长度`总是比最大​​索引多一个? (长度= 10元素最后一个元素= 9) – 2010-12-04 12:17:28

回答

2

你与堆栈长度看到的是正常的,它只是在评估:random选择在mydiv1> child selector所有<a>元素,所以在这一点上,长度为4

对于例如,这会产生您期望的结果:

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

You can test it out here


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