2010-12-04 3 views
0

要素のスタックからランダム要素を選択する ":random"セレクタを実装しようとしています。jQueryカスタムフィルタの問題:要素のスタックがあまりにも多い

ここでは、コードは次のとおりhttp://jsfiddle.net/nuSWF/

問題はセレクタが時々(インデックスのうち)が存在しない要素を選択しようとしているが。だから私は原因を明らかにするデモコードを用意しましたが、理由を理解できません。私はそれがバグか何かのようだ。

P.S私は他の方法でランダムな要素を選択できることを知っていますが、今度はこれを実装しなければなりません。あなたは、スタックの長さを見ている何

+0

私は確信していませんが、「長さ」は常に最大のインデックスよりも1つ多くありませんか? (長さ= 10要素最後の要素= 9) –

+0

また、失敗したときにインデックスにはどのような値がありますか? –

答えて

2

が正常である、それだけで> child selectormydiv1すべて<a>要素に:randomセレクタを評価していますので、その時点での長さは4.

ですたとえば、これはあなたが期待している結果を生成します:

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

You can test it out here


だから、全体的に起こっているあなたのセレクタは確かにランダム<a>要素にフィルタリングされている...しかし、彼らは<span>の下でなら、それらのは、またはさらに(後> child selectorによってフィルタリングされていないことかもしれないもの、彼らフィルタリングされます)。これはすべてのセレクタに当てはまります。あなたが実行するすべてのフィルタは、要素のセットを減らします...後でさらにセレクタによってフィルタリングされる可能性があります。

関連する問題