448

IDを渡すことでjQueryを介してselectのすべてのオプションを取得するにはどうすればよいですか?

私はテキストではなく、それらの値を取得することだけを探しています。

4

19 に答える 19

663

使用する:

$("#id option").each(function()
{
    // Add $(this).val() to your list
});

.each() | jQuery API ドキュメント

于 2009-02-26T11:52:38.437 に答える
187

jQueryはわかりませんが、select要素を取得すると、「options」オブジェクトが含まれていることは知っています。

var myOpts = document.getElementById('yourselect').options;
alert(myOpts[0].value) //=> Value of the first option

12歳の答え。それを少し近代化しましょう:

console.log( [...document.querySelector("#demo").options].map( opt => opt.value ) );
<select id="demo">
  <option value="Belgium">Belgium</option>
  <option value="Botswana">Botswana</option>
  <option value="Burkina Faso">Burkina Faso</option>
  <option value="Burundi">Burundi</option>
  <option value="China">China</option>
  <option value="France">France</option>
  <option value="Germany">Germany</option>
  <option value="India">India</option>
  <option value="Japan">Japan</option>
  <option value="Malaysia">Malaysia</option>
  <option value="Mali">Mali</option>
  <option value="Namibia">Namibia</option>
  <option value="Netherlands">Netherlands</option>
  <option value="North Korea">North Korea</option>
  <option value="South Korea">South Korea</option>
  <option value="Spain">Spain</option>
  <option value="Sweden">Sweden</option>
  <option value="Uzbekistan">Uzbekistan</option>
  <option value="Zimbabwe">Zimbabwe</option>
</select>

于 2009-02-26T11:45:33.867 に答える
153

$.mapおそらくこれを行う最も効率的な方法です。

var options = $('#selectBox option');

var values = $.map(options ,function(option) {
    return option.value;
});

$('#selectBox option:selected')選択したものだけが必要な場合は、変更オプションを追加できます。

最初の行はすべてのチェックボックスを選択し、それらの jQuery 要素を変数に入れます。次に.map、jQuery の関数を使用して、その変数の各要素に関数を適用します。私たちがしているのは、各要素の値を返すことだけです。map 関数内でそれらを返すため、要求どおりに値の配列を実際に構築します。

于 2011-10-13T20:43:21.623 に答える
78

いくつかの答えはを使用しますがeachmapここではより良い代替手段です。

$("select#example option").map(function() {return $(this).val();}).get();

mapjQueryには(少なくとも)2つの関数があります。Thomas Petersenの答えは、「Utilities/jQuery.map」を使用しています。この回答では、「トラバーシング/マップ」(したがって、少しクリーンなコード)を使用しています。

それはあなたが値で何をしようとしているのかに依存します。たとえば、関数から値を返したい場合は、mapおそらくより良い代替手段です。ただし、値を直接使用する場合は、おそらく必要ですeach

于 2009-02-26T12:37:53.540 に答える
60
$('select#id').find('option').each(function() {
    alert($(this).val());
});
于 2009-02-26T11:57:55.087 に答える
16
$("#id option").each(function()
{
    $(this).prop('selected', true);
});

ただし、正しい方法は、次のように要素の DOM プロパティを設定することです。

$("#id option").each(function(){
    $(this).attr('selected', true);
});
于 2012-04-30T19:48:13.380 に答える
12

チェックボックスの名前ですべての「選択した値」を取得し、「、」で区切られた文字列で表示できます。

これを行う良い方法は、jQuery の $.map() を使用することです。

var selected_val = $.map($("input[name='d_name']:checked"), function(a)
    {
        return a.value;
    }).join(',');

alert(selected_val);
于 2011-05-06T15:09:41.013 に答える
6

実施例

これを行う最も効率的な方法は、$.map()

例:

var values = $.map($('#selectBox option'), function(ele) {
   return ele.value; 
});
于 2013-09-20T05:35:54.463 に答える
3

そのために次のコードを使用できます。

var assignedRoleId = new Array();
$('#RolesListAssigned option').each(function(){
    assignedRoleId.push(this.value);
});
于 2014-02-19T12:48:10.110 に答える
2

複数選択オプションの場合:

$('#test').val()選択した値のリストを返します。 $('#test option').lengthオプションの総数を返します (選択されているものと選択されていないものの両方)

于 2016-10-14T20:43:21.440 に答える
0
$("input[type=checkbox][checked]").serializeArray();

または:

$(".some_class[type=checkbox][checked]").serializeArray();

結果を表示するには:

alert($("input[type=checkbox][checked]").serializeArray().toSource());
于 2012-08-06T16:18:26.667 に答える
0

選択したテキストを含むすべてのオプションを探している場合は、以下のコードが機能します。

$('#test').find("select option:contains('B')").filter(":selected");
于 2014-08-14T12:13:45.843 に答える