2012-01-10 32 views
12
<select id="sel"> 
    <option id="1">aa</option> 
    <option id="2">bb</option> 
    <option id="3">cc</option> 
</select> 

$("#sel").change(function(){ 
    alert($(this).children().attr('id')) 
}) 

LIVE取得:http://jsfiddle.net/cxWVP/現在選択されているオプション

をどのように私は、現在選択されたオプションのIDを取得することができますか?今私は常にid = "1"を表示します。

+4

あなたはIDが代わりにあなたのオプションの値属性の属性を持っているいくつかの理由がありますか? –

+1

FYI:その番号で始まる(またはその)番号は無効です。 –

+0

私も値を使用しますが、この例ではIDのみを示しました。 –

答えて

18
$('#sel').change(function(){ 
    alert($(this).find('option:selected').attr('id')); 
}); 

が動作するはずです。

+1

自己尊重の開発者は[Esailiaの答え](http://stackoverflow.com/a/8809329)でこの方法を選択する必要はありません。これは美しいものではないことを除いて、景色のようなものです。 –

+1

@Jakub:これは厳しいものですが、Esailiaの答えも好きです(これは私と同じです)。これは、jQueryを心がけている開発者で、jQueryに言及すると理解しやすくなります。私はjQueryデベロッパーではないので、手続き型のjQueryコードが好きではないので、まっすぐなJSコードがより明確になるので、不要な抽象レベルがあるので、使用しません。 –

+0

JuanMendes&AndyE、そういうわけで、もし皆さんが私の答えが嫌いなのなら、あなたはdownvoteへ右折しなければなりません。過度に重大である必要はありません。 – Jakub

0

id属性をvalueに変更し、.val()を使用します。

<select id="sel"> 
    <option value ="1">aa</option> 
    <option value ="2">bb</option> 
    <option value ="3">cc</option> 
</select> 


var selectedValue = $("#sel").val(); 
+0

それはあなたにIDを与えません、それはあなたに与えます:aa、bbまたはcc –

+0

明白な(ID対価値)を指摘してくれてありがとう。私は自分の答えを更新しました。 – jrummell

+1

これは依然として要求されたものではなく、HTMLを変更することはできません。 OPは実際にselect内の 'option'オブジェクトにアクセスする必要があります –

10

<option>タグがvalue属性を持つ必要があります。 1つを選択すると、$("#sel").val()を使用して値を取得します。

<select id="sel"> 
    <option value="1">aa</option> 
    <option value="2">bb</option> 
    <option value="3">cc</option> 
</select> 

$("#sel").change(function(){ 
    alert($(this).val()) 
}); 

DEMO:http://jsfiddle.net/yPYL5/

+1

OPは選択されたオブジェクトの値を求めていません。 OPが本当に望んでいるように見えるのは、オプションオブジェクト(そのid属性)です。 –

+0

@JuanMendes:Huh?どのオプションが選択されているかに応じて、OPの希望は1,2または3のいずれかになります。これがこのコードの機能です。 '

+0

申し訳ありませんが、IDと値を入れ替えたことに気付かなかった... HTMLを変更しても、OPに教えてもらえませんでした。 –

1

$(this).find('option:selected').attr('id')

3

http://jsfiddle.net/ugUYA/

select要素内で選択したオプションを取得するには、あなたは、あなたが選択したオプションのオブジェクト

$("#sel").change(function(){ 
    alert(this.options[this.selectedIndex].id) 
}) 
に到達するために options配列を使用することができ、 selectedIndexを使用することができます
0

jquery:選択したフィルタが機能しますか?このような 何か...

$("#sel:selected").each(function(){ 
    alert($(this).attr('id')) 
}) 
+0

それは動作しません。 –

+0

'$("#sel option:selected ")'であるべきですが、ハンドラでselect要素への参照がすでに 'this'として参照されているので無駄です –

3

は、理想的には、オプションタグのvalue属性を使用してちょうどドロップダウン要素から選択された値を取得するためにvalメソッドを使用する必要があります。この

$("#sel").find('option:selected').attr('id'); 

を試してみてください。 $("#sel").val();

+0

偉大な答え:質問に答えますが、それ。 –

1

はこれを試してみてください:

$('select:#idSelect').val() 
関連する問題