2010-12-04 66 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>,他們得到過濾)。如果您仔細考慮過,所有選擇器都是如此......您執行的任何過濾器只會減少元素集合......它們可能會在稍後被更多選擇器進一步過濾。