2009-06-09 16 views
2

何かが私の状況について非常に厄介である()を見つける...私はこのようなものがあります:jQueryセレクタのバグ?シンプルなセレクタ対で構成されるセレクタ&

<div id="selector"> 
    <input type='radio' /> 
    <input type='radio' /> 
    <input type='radio' /> 
</div> 

私は$("#selector input[type=radio]")すべての3つの要素を使用している場合が発見されたが、私は$("#selector").find("input[type=radio]")を使用している場合またはfind("input")でも最初のものだけが見つかる。

これはjQueryのバグですか? find()を正しく使用していませんか?

明確化:すべての入力を取得するためにfind()を使用したいが、私が試したものは最初のものだけを見つける。

編集:私は試してみてくださいjQueryの1.3.2

+0

jQueryは、他のJavaScriptフレームワークと異なり、$( 'input')などの検索を行うとIDで要素を取得しません。 #:$( '#selector') – Blixt

+0

私は例を修正しました...それはタイプミスでした。 – Dan

+0

。どのブラウザですか? –

答えて

0

を使用してい

$( "#セレクタ")( "入力[タイプ=ラジオ]")

+0

これは私が使っているものです。悪い例をおかけして申し訳ありません:) – Dan

2

あなたが本当に欲しいものを見つけます。次のとおりです。

$("#selector > :radio") 

見つける()は1で停止しないと、それはかもしれように、すべての一致を検索しますので、あなただけの1を取得している理由のために、私が実行されています実際のコードを参照する必要があるだろうとそれを後で使用する方法が問題です。

+0

私はfirebugコンソールでこれを試していましたが、2つのコマンドは異なる結果を返します:複合セレクタがすべてを返し、find()は最初のものだけを返します。 – Dan

-3

$( "#選択")。子ども( "入力[タイプ@ =ラジオ]")

+2

@を選択する属性は、jQuery –

1

2つのコードフラグメントは、同じ結果を返さなければなりません。

次のコードを実行すると、最初のアラートに「3」と2番目の「1」が表示されますか?

var a = $("#selector input[type=radio]"); 
var b = $("#selector").find("input[type=radio]"); 

alert(a.length); 
alert(b.length); 

確認できますか?

+0

でサポートされなくなりました。そういうわけで、それはとてもうんざりです。 – Dan

0

See here

すべての3つのリターン同じ結果!

$(function() { 
    console.log($("#selector input[type=radio]"));   // 3 
    console.log($("#selector").find("input[type=radio]")); // 3 
    console.log($("#selector").find("input"));    // 3 
});