2011-01-12 13 views
0

私はいくつかのコードでこの構文に遭遇しました。これはIE8で壊れていますが、他のもので動作しています。Jquery selector syntax

$(this.handle()).find("[id]:visible:enabled"); 

私はそれがIDSのために、現在のページ内のすべての要素を検索探して、その後、「目に見える」と「有効」が、私は今、そうは思わない属性の結果の要素を検索するかもしれないと思いました。 "visible"または "enabled"を検索すると、IE8の開発者ツールは結果を表示しません!

はIE8で失敗します。

+1

'this.handle()とは何ですか? –

+1

*現在のページのすべての要素を検索していると思っていたかもしれません。 - それは '$(" [id]:visible:enabled ")'です。 'find'を呼び出すと、ページ全体ではなく' find'と呼ばれるものの下を検索します。 –

+1

@Daniel - 実際に 'this.handle()'が '' '' '' 'document''や' 'document.body''や' 'body" 'を返す場合は、まったく同じになります。著者が提供したコードを推測することは不可能です。 – ken

答えて

0

this.handle()は有効なものを返し、$(this.handle())はjqueryオブジェクトです。検索が利用可能です。クエリはChromeでは正しく機能しますが、IE8では正しく動作しません。私は今これらのセレクタの文書がapi.jquery.com/enabled-selectorapi.jquery.com/visible-selectorを参照して、これは本当に私の質問に答える。 JQueryのfindメソッドがブラウザ上で異なって動作しているようです。おそらくこの問題はjquery自体に参照されるべきです。

2

id属性を持つすべての子要素は、visibleenabledです。 From this testそれは動作しているようです。 IE8とChromeでテストされています。

1

実行されるコンテキストによって異なります。 「これ」とは何か、「ハンドル」と呼ばれる機能を持っていますか?もしそうでなければ、それは失敗する理由です。 //api.jquery:これはthis.handleを動作するため

は()それはジョサイアRudellが既に

+0

this.handle()は有効なものを返し、$(this.handle())はjqueryオブジェクトです。検索が利用可能です。クエリはChromeでは正しく機能しますが、IE8では正しく動作しません。私はこれらのセレクタのドキュメントをhttp://api.jquery.com/enabled-selector/とhttp://api.jquery.com/visible-selector/で見ることができます。これは私の質問に本当に答えるものです。 JQueryのfindメソッドがブラウザ上で異なって動作しているようです。おそらくこの問題はjquery自体に参照されるべきです。 – learnerplates