0

要素のスタックからランダムな要素を選択する「:random」セレクターを実装しようとしています。

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

問題は、セレクターが存在しない(インデックス外の)要素を選択しようとすることがあることです。そこで、原因を浮き彫りにしたデモコードを用意しましたが、その理由がわかりません。バグか何かのようです。

PS:他の方法でランダムな要素を選択できることは知っていますが、今回はこれを実装する必要があり、内部で何が起こっているのか疑問に思います。

4

1 に答える 1

2

スタックの長さで表示されるのは正常です。子セレクターの前にあるすべての要素の:randomセレクターを評価しているだけなので、その時点での長さは4です。 <a>mydiv1 >

たとえば、これにより、期待する結果が得られます。

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

ここでテストできます


したがって、全体的に起こっていることは、セレクターが実際にランダムな<a>要素にフィルターをかけていることです...しかし、それらは後で子セレクターによってさらにフィルターで除外される場合とされない場合があります(下にある場合はフィルターされます)。これは、考えてみればすべてのセレクターに当てはまります...実行するフィルターは、要素のセットを減らすだけです...後で、より多くのセレクターによってさらにフィルターされる可能性があります。><span>

于 2010-12-04T12:17:54.620 に答える