1271

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

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

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

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

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

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

4

22 に答える 22

1268

値が 2 のオプションを取得する場合は、次を使用します。

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

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

$("#list option:selected").text();
于 2009-05-15T15:52:49.007 に答える
1141

に等しいlistプロパティを持つidを持つ要素を探しています。 あなたが欲しいのは:の子ですvalue2
optionlist

$("#list option[value='2']").text()
于 2008-10-13T04:08:03.723 に答える
135

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

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

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

数日前、このコードを使用したサイトの jQuery を 1.6 から 1.9 に更新すると、これが機能しなくなることに気付きました...おそらく別のコードとの競合でした...とにかく、解決策はfind() 呼び出し:

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

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

于 2011-07-29T18:55:23.707 に答える
109

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

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

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

于 2011-05-02T12:25:54.453 に答える
37
$("#list option:selected").each(function() {
   alert($(this).text());
});  

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

于 2010-06-04T14:30:43.497 に答える
37
  1. ページに select タグが 1 つしかない場合は、id 'list' 内で select を指定できます。

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

    jQuery("select option:selected").text();
    
于 2012-06-13T03:45:55.690 に答える
24

次のことを試してください。

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

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

于 2008-10-13T04:08:45.657 に答える
19

これは、しばらく更新されていない古い質問です。これを行う正しい方法は、使用することです

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

これが役立つことを願っています:-)

于 2014-07-02T23:15:48.357 に答える
17

選択したラベルを取得したかった。これはjQuery 1.5.1でうまくいきました。

$("#list :selected").text();
于 2011-03-01T05:44:03.060 に答える
13
$("#list [value='2']").text();

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

于 2010-05-31T06:38:46.203 に答える
9

動的に作成された select 要素を .each(function()...):$("option:selected").text();で「ループ」している$(this + " option:selected").text()ときに、選択したオプション テキストを返さなかった - 代わりに null でした。

しかし、ピーター・モーテンセンの解決策はうまくいきました。

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

なぜ通常の方法がうまくいかないのかはわかりませんが.each()(おそらく私自身のミスです)、ピーターさん、ありがとうございます。それが最初の質問ではないことは知っていますが、「Google を介してやってくる初心者向け」に言及しています。

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

于 2011-05-26T19:04:13.223 に答える
9

使用する:

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();
});
于 2011-07-11T23:53:18.750 に答える
5

ヒント: 値が動的な場合は、以下のコードを使用できます。

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

または(より良いスタイル)

$("#list option").filter(function() {
     return this.value === aDynamicValue;
}).text();

jQueryで述べたように、特定のオプションタグテキストを取得し、動的変数を値に配置します

于 2015-03-09T05:43:12.080 に答える
5

ID ではなく内部フィールド名で val を取得することを探していましたが、Google からこの投稿にアクセスしましたが、必要な解決策が見つかりませんでしたが、解決策が見つかりました。

したがって、これは、SharePoint リストに長い ID を使用する代わりに、フィールドの内部名で選択された値を探すのに役立つ場合があります。

var e = $('select[title="IntenalFieldName"] option:selected').text(); 
于 2013-11-05T21:57:29.253 に答える
4

動的にキャストされたオブジェクトを扱っていたため、この回答が必要でしたが、ここの他の方法は機能していないようでした:

element.options[element.selectedIndex].text

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

于 2013-02-12T15:36:08.050 に答える
3

別の解決策として、jQuery セレクターのコンテキスト部分を使用して、ドロップダウン リスト内<option>の要素を検索することもできます。value="2"

$("option[value='2']", "#list").text();
于 2013-01-20T14:57:54.380 に答える
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>
于 2012-01-03T21:04:03.537 に答える
0

試す

[...list.options].find(o=> o.value=='2').text

let text = [...list.options].find(o=> o.value=='2').text;

console.log(text);
<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

于 2020-08-20T14:23:19.213 に答える