jQueryは特定のオプションタグテキストを取得します


1234

大丈夫、私がこれを持っていると言います:

<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

値「2」があるときに「オプションB」を取得したい場合、セレクターはどのように見えますか?

これは、選択されたテキスト値を取得する方法を尋ねるのではなく、value属性に応じて、選択されているかどうかに関係なく、それらのいずれか1つだけを求めることに注意してください。私は試した:

$("#list[value='2']").text();

しかし、それは機能していません。


この期間には、以下を使用します$("#list option").filter(function () { return $(this).html() == "stuff"; }).val();
。–

回答:


1122

これlistは、valueと等しいプロパティを持つid を持つ要素を探しています2
あなたが欲しいのはのoption子ですlist

$("#list option[value='2']").text()

4
このnickfをありがとう。値を動的に取得したい場合は、この回答を以下に示します。var selectValue = document.getElementById( 'list')。value; var selectOption = $( "#list option [value =" + selectValue + "]")。text(); ///良い例nickf。
ケビンフロリダ州

283
@Kevin、その場合、この下の答えを使用することができます。$('#list option:selected').text()
nickf

6
@nickf、およびより単純な$('#list').val()
Derek朕會會功夫2012

36
@Derek、val()はオプションのテキストを提供せず、その値を提供しますが、場合によっては(多くの場合、私は言うまでもなく)同じではありません。
itsmequinn 2013年

一部のブラウザーでは、ユーザーには見えないテキストの前後にスペースが追加される場合があるため、常に.trim()後を使用する必要.text()がありますが、誤った値を取得する可能性があります$("#list option[value='2']").text().trim()
Hassan ALAMI

1262

オプションの値を2にしたい場合は、

$("#list option[value='2']").text();

現在選択されているオプションを取得する場合は、

$("#list option:selected").text();

11
テキストの代わりに値を取得するには、次のように記述する必要があります:$( "select#list")。val(); これは尋ねられた質問の実際の答えではないことは知っていますが、Googleを介してやって来る初心者のためにこの点について言及することを考えました。
知識への渇望'19年

$( "
#list

選択されたテキストを取得するために(質問では具体的にそれが要求されなかったとしても)、この方法は、選択された値が何であるかを知る必要がないため優れています。
theJerm

132

これは完璧に機能し、MySQLによって生成されたオプションを使用して2つの異なる値を送信する方法を探していました。以下は汎用的で動的です。

$(this).find("option:selected").text();

コメントの1つで述べたように。これにより、オプション値とテキストの両方の値を取得したいすべての選択ボックスで機能する動的関数を作成できました。

数日前、私はこのコードを使用したサイトのjQueryを1.6から1.9に更新するときに、この動作が停止したことに気づきました...おそらく、別のコードとの競合でした...とにかく、解決策は、からオプションを削除することでしたfind()コール:

$(this).find(":selected").text();

それが私の解決策でした... jQueryの更新後に問題が発生した場合にのみ使用してください。


2
おそらくこれは、WebStorm 8に従って、それを行うには、より効率的な方法である
dbinott

2
この回答は洞察に富んでいて、私が抱えていた問題を解決するのに役立ちましたが、簡単に言うと、これは質問に適切に回答していません:これは、選択されたテキスト値を取得する方法ではなく、選択されたテキスト値属性によって異なります。
StubbornShowaGuy 2016年

109

Paoloによって投稿された元のHTMLに基づいて、私は次のことを思いつきました。

$("#list").change(function() {
    alert($(this).find("option:selected").text()+' clicked!');
});

Internet ExplorerとFirefoxで動作することがテストされています。


11
これに代わるものは次のとおりです:$( "option:selected"、this).text()
Doug S

これは、静的なhtmlや単純なJavaScriptイベントだけでなく、複雑なシナリオにも対応できるため、より適切な回答です。
オアシス艦隊2015年

37
$("#list option:selected").each(function() {
   alert($(this).text());
});  

#list要素内で選択された複数の値。


37
  1. ページに選択タグが1つしかない場合は、ID「リスト」内で選択を指定できます

    jQuery("select option[value=2]").text();
  2. 選択したテキストを取得するには

    jQuery("select option:selected").text();

24

以下を試してください:

$("#list option[value=2]").text();

元のスニペットが機能しなかった理由は、OPTIONタグがのタグの子SELECTであるためid listです。


19

これは、以前に更新されていない古い質問です。これを行う正しい方法は、

$("#action").on('change',function() {
    alert($(this).find("option:selected").text()+' clicked!');
});

これが役に立てば幸いです:-)


これは間違いなく正しくありません。これは、選択されたテキスト値を取得する方法を尋ねるものではないことに注意してください
Wesley Smith

17

選択したラベルを取得したかった。これはjQuery 1.5.1で機能しました。

$("#list :selected").text();

17
$(this).children(":selected").text()

残念ながら、optgroup自分の子としてタグがselectあり、選択したオプションがこのにある場合、これは機能しませんoptgroup$("#list option:selected").text();この場合でも機能する使用
MartinM 2017年

13
$("#list [value='2']").text();

idセレクターの後にスペースを残します。


13

関数を使用して、選択したオプションテキストを取得できます .text();

あなたはこのような関数を呼び出すことができます:

jQuery("select option:selected").text();

10

しばらく.eachで動的に作成された選択要素を「ループする」(関数()...):$("option:selected").text();$(this + " option:selected").text()、選択されたオプションテキストを返しませんでした-代わりにnullでした。

しかし、Peter Mortensenのソリューションはうまくいきました:

$(this).find("option:selected").text();

通常の方法がうまくいかない理由はわかりません .each()(おそらく私自身の間違い)でが、Peterに感謝します。私はそれが最初の質問ではなかったことを知っていますが、「Googleから来る初心者のために」それについて言及しています。

$('#list option:selected").each()select要素からも取得する必要があることを除いて、私は始めていたでしょう。


8

使用する:

function selected_state(){
    jQuery("#list option").each(function(){
        if(jQuery(this).val() == "2"){
            jQuery(this).attr("selected","selected");
            return false;
        }
    });
}

jQuery(document).ready(function(){
    selected_state();
});

5

私はIDではなく内部フィールド名でvalを取得しようとしていて、googleからこの投稿に来ましたが、必要な解決策は見つかりませんでしたが、解決策が見つかりました:

したがって、これは、SharePointリストに長いIDを使用する代わりに、フィールドの内部名を持つ選択された値を探す誰かを助けるかもしれません:

var e = $('select[title="IntenalFieldName"] option:selected').text(); 

固溶体。申し訳ありませんが、この秘密の場所にあります。このソリューションを提供するためのより目立つ場所を見つけたいと思うかもしれません。たぶん、あなたはあなた自身の質問をして答えることができますか?
Andrew Kozak

4

動的にキャストされたオブジェクトを扱っていたため、この答えが必要でしたが、ここにある他のメソッドは機能しないようです。

element.options[element.selectedIndex].text

これはもちろん、HTMLをnodeValue、childNodesなどで解析する代わりに、DOMオブジェクトを使用します




2

選択されたものを右側に表示する複数選択用の動的バージョンが欲しかった$(this).findです(先に読んだり見たりしたいのですが...)。

<script type="text/javascript">
    $(document).ready(function(){
        $("select[showChoices]").each(function(){
            $(this).after("<span id='spn"+$(this).attr('id')+"' style='border:1px solid black;width:100px;float:left;white-space:nowrap;'>&nbsp;</span>");
            doShowSelected($(this).attr('id'));//shows initial selections
        }).change(function(){
            doShowSelected($(this).attr('id'));//as user makes new selections
        });
    });
    function doShowSelected(inId){
        var aryVals=$("#"+inId).val();
        var selText="";
        for(var i=0; i<aryVals.length; i++){
            var o="#"+inId+" option[value='"+aryVals[i]+"']";
            selText+=$(o).text()+"<br>";
        }
        $("#spn"+inId).html(selText);
    }
</script>
<select style="float:left;" multiple="true" id="mySelect" name="mySelect" showChoices="true">
    <option selected="selected" value=1>opt 1</option>
    <option selected="selected" value=2>opt 2</option>
    <option value=3>opt 3</option>
    <option value=4>opt 4</option>
</select>

2

次のいずれかの方法で入手できます

$("#list").find('option').filter('[value=2]').text()

$("#list").find('option[value=2]').text()

$("#list").children('option[value=2]').text()

$("#list option[value='2']").text()

$(function(){    
    
    console.log($("#list").find('option').filter('[value=2]').text());
    console.log($("#list").find('option[value=2]').text());
    console.log($("#list").children('option[value=2]').text());
    console.log($("#list option[value='2']").text());
    
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

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