$(this)選択されたオプションをjQueryで取得する方法?


91

次のコードは機能します。

$("#select-id").change(function(){
  var cur_value = $('#select-id option:selected').text();
  . . .
});

2行目を次のようにリファクタリングする方法:

var cur_value = $(this).***option-selected***.text();

何に使うの***option-selected***

回答:


120

選択した値: $(this).val()

選択したオプション要素が必要な場合は、 $("option:selected", this)


101
 $(this).find('option:selected').text();

これは私にとっては完全に機能しました$("option:selected", this)。上記のように試してみましたが、問題がありました。ボタンクリックを使用して、選択したオプション要素のテキストを別のdivに追加していましたが、ボタンをクリックすると、選択した要素が実際に変更されました。これを使って。
skwidbreth 16

53

選択したオプションを取得するためのドロップダウンのonchangeイベントに対する私の意見では最良かつ最短の方法:

$('option:selected',this);

value属性を取得するには:

$('option:selected',this).attr('value');

タグ間の表示部分を取得するには:

$('option:selected',this).text();

あなたのサンプルでは:

$("#select-id").change(function(){
  var cur_value = $('option:selected',this).text();
});

は使用しないでください。jQuery1.10.context以降では非推奨です-api.jquery.com/category/deprecated/deprecated-1.10
rafx

ええ、でもあなたが言っているのはこれです: api.jquery.com/context $( "ul"、document.body).context.nodeName使用し
ません

1
私は答えが好きですが、なぜそれが最善ですか?
セバスチャンジケル2016年



9

を使用findして、現在のjQueryオブジェクトが指すノードの子孫である選択されたオプションを探すことができます。

var cur_value = $(this).find('option:selected').text();

これは直接の子である可能性が高いため、実際に.children代わりに使用することをお勧めします。

var cur_value = $(this).children('option:selected').text();

7
var cur_value = $(this).find('option:selected').text();

optionselectあなたの直接の子である可能性が高いので、以下も使用できます。

var cur_value = $(this).children('option:selected').text();

http://api.jquery.com/find/


option-selected引用符なしでどこで入手できますか...?
Platinum Azure

私が投稿したとき、それはタイプミスでした。答えを修正しました。
thomthom 2012

find('option:selected')空の文字列を返します。jQueryのどのバージョンが必要ですか?1.6.1で作業しています。children('option:selected')動作します。
Bセブン

option:selectedv1.0から使用されていますapi.jquery.com/selected-selector
thomthom 2012

0

最良の推測:

var cur_value = $('#select-id').children('option:selected').text();

この場合はDOMツリーをたった1つのブランチしか進んでいないことがわかっているので、私は子供がより好きです...


多分あなたが本当に意味したのは、var cur_value = $(this).children( 'option:selected')。text();でした。
ジョージョンストン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.