<select>の最初のオプションをjQueryで選択する方法


548

jQueryで最初に選択したオプションを選択するにはどうすればよいですか?

<select id="target">
  <option value="1">...</option>
  <option value="2">...</option>
</select>

回答:


956
$("#target").val($("#target option:first").val());

364
これは$( "#target")[0] .selectedIndex = 0;を使用すると簡単にできることに注意してください。
デビッドアンドレス

17
機能しますが、1番目の要素の値に基づいています。1番目の要素に空の値が含まれている場合、最も近い要素のWITH値が選択されます
evilReiko

2
IE6を除いて、うまく機能しているようです。7〜8が不明、9で動作
ニコリ

3
私は以前の発言を取り消し、自分より先に進んでいました。$( "#target")。val( "option:first"); IE6を除くほとんどすべての場所で機能します$( "target")。val($( "#target option:first")。val()); 文字通り最初の値を検索し、それをターゲットの値として入力しているため、IE6で動作します。1つではなく2つのIDルックアップ。
Nicholi 2012

2
また、IE6、7、8では実際に必要です。.val( 'option:first')はIE9(およびSafari、Firefox、Chrome、Opera)で動作します。
Nicholi 2012

178

あなたはこれを試すことができます

$("#target").prop("selectedIndex", 0);

2
これはすべての場合に正しく機能するわけではありません。親/子のカスケードドロップダウンがあります。親#1を選択し、子#1を表示し、親#2を選択し、子#2を表示します。新しい親を選択するときはいつでも、対応する子を最初のオプションに戻す必要があります。このソリューションはこれを行いません。子メニューを「スティッキー」のままにします。より多くのシナリオで機能する答えについては、この質問のoption:selected.prop( 'selected'、false)/ option:first.prop( 'selected'、 'selected')ソリューションを参照してください。
ランスクリーブランド

これはonChangeイベントをトリガーしません。少なくともクロム。
Tomasz Mularczyk 2016

ありがとうございました!これは私のために働いた答えのリストの最初の答えです。
Casey Crookston、2017年

6
@Tomasz$("#target").prop("selectedIndex", 0).change();
mplungjan

@Romesh値に基づいてselectedIndexを設定するにはどうすればよいですか?
Junior Frogie、2018

111
// remove "selected" from any options that might already be selected
$('#target option[selected="selected"]').each(
    function() {
        $(this).removeAttr('selected');
    }
);


// mark the first option as selected
$("#target option:first").attr('selected','selected');

1
良い第二のアプローチ。選択した属性の値を追加してください。たとえば、attr( "selected"、 "selected")です。この追加のパラメーターがないと、選択は行われません。
デビッドアンドレス

@EgorPavlikhin-JQueryコードを含めるように回答を編集して、すでに選択されているオプションから「selected」フラグを削除しました。今の答えは正しいです:)
jmort253

20
このeach関数は必要ありません。次のようにする必要があります: $('#target option[selected="selected"]').removeAttr('selected')またremovePropprop代わりにと一緒に使用する必要があります。
vsync '22

ジェームスリーベイカーのこの質問の別の場所でのより完全なバージョンの回答ですが、インターフェイスが適切に管理されている場合は不要な計算サイクルが追加されます。
ランスクリーブランド

65

使うとき

$("#target").val($("#target option:first").val());

最初のオプション値がnullの場合、これはChromeおよびSafariでは機能しません。

私は好む

$("#target option:first").attr('selected','selected');

すべてのブラウザで動作するためです。


3
これがより多くのケースで機能するためには、以前に選択した要素を「選択解除」する必要もあります。詳細については、James Lee Bakerの回答を参照してください。
ランスクリーブランド

44

select入力の値を変更したり、selected属性を調整したりすると、DOM要素のデフォルトのselectedOptionsプロパティが上書きされる可能性があり、resetイベントが呼び出されたフォームで要素が正しくリセットされない可能性があります。

jQueryのpropメソッドを使用して、必要なオプションをクリアおよび設定します。

$("#target option:selected").prop("selected", false);
$("#target option:first").prop("selected", "selected");

3
完璧です。カスケードドロップダウンメニューがあります。ユーザーが親オプション2を選択し、次に子オプション3を選択すると、「固定」されません。つまり、ユーザーは親#1を選択してから、親#2を再選択します。その場合、子メニューを最初のオプション(私の場合は「すべて」)にリセットします。他のすべてのソリューションは、Firefox v19およびLinux上のChromeでは失敗します。
ランスクリーブランド

33
$("#target")[0].selectedIndex = 0;

1
これは、ドロップダウンに項目が事前に選択されている場合は機能しません。詳細については、選択した回答に対する私のコメントを参照してください。
ランスクリーブランド

21

上位投票の回答について私が発見したと思う微妙な点の1つは、選択された値を正しく変更しても、ユーザーに表示される要素を更新しないことです(ウィジェットをクリックしたときにのみ、横にチェックが表示されます)更新された要素)。

.change()呼び出しを最後にチェーンすると、UIウィジェットも更新されます。

$("#target").val($("#target option:first").val()).change();

(jQuery MobileとChromeデスクトップのボックスを使用しているときに気付いたので、どこでもそうであるとは限りません)。


.change()呼び出しを最後にチェーンすると、UIウィジェットも更新されます。
codemirror 2017年

17

オプションを無効にしている場合は、not([disabled])を追加して、それらが選択されないようにすることができます。

$("#target option:not([disabled]):first").attr('selected','selected')

1
無効化されたオプションについての良い点。提示された答えに加えて素晴らしい!
ランスクリーブランド

16

(選択した複数の要素の)値をリセットする別の方法は次のとおりです。

$("selector").each(function(){

    /*Perform any check and validation if needed for each item */

    /*Use "this" to handle the element in javascript or "$(this)" to handle the element with jquery */

    this.selectedIndex=0;

});

4
+1それは実際には良い答えですが、それを質問ドメインにより具体的にすることもできます。代わりに、$("selector")あなただけ書かれている可能性が$('#target')
ジャック・


7
$('#newType option:first').prop('selected', true);

これは、すでに選択されているオプションがない場合にのみ機能します。James Lee Bakerの回答を参照してください。
Webars 2014年

6

すでに選択された属性がある場合、attr selectedを設定するだけでは機能しないことがわかりました。現在使用しているコードでは、まず選択した属性の設定を解除してから、最初のオプションを選択します。

$('#target').removeAttr('selected').find('option:first').attr('selected', 'selected');

これはうまく機能し、この質問の別の箇所で言及されているJames Lee Bakerの回答と非常によく似ています。option:firstの実行はfind()よりも(計算的に)高速である可能性が高いため、option:selectedおよびoption:firstを使用した他の回答が好きです。
ランスクリーブランド

5

各機能はおそらく必要ないでしょうが...

$('select').each(function(){
    $(this).find('option:first').prop('selected', 'selected');
});

私のために働く。


5

ここに私がそれをする方法があります:

$("#target option")
    .removeAttr('selected')
    .find(':first')     // You can also use .find('[value=MyVal]')
        .attr('selected','selected');

1
これはうまく機能し、この質問の別の箇所で言及されているJames Lee Bakerの回答と非常によく似ています。option:firstの実行はfind()よりも(計算的に)高速である可能性が高いため、option:selectedおよびoption:firstを使用した他の回答が好きです。
ランスクリーブランド

2

次のように、最後にトリガー( '変更')を使用するだけで機能しました。

$("#target option:first").attr('selected','selected').trigger('change');

2

最初のオプションをデフォルトとして使用する場合

<select>
    <option value="">Please select an option below</option>
    ...

その後、あなたは単に使うことができます:

$('select').val('');

それは素晴らしくてシンプルです。



1

James Lee Bakerの返事の裏では、:first:selected ...

$('#target').children().prop('selected', false);
$($('#target').children()[0]).prop('selected', 'selected');

1

私にとっては、次のコードを追加したときにのみ機能しました。

.change();

私にとっては、次のコードを追加したときにのみ機能しました。フォームを「リセット」したい、つまり、フォームのすべての選択の最初のオプションをすべて選択したかったので、次のコードを使用しました。

$('form').find('select').each(function(){ $(this).val($("select option:first").val()); $(this).change(); });


1

使用する:

$("#selectbox option:first").val()

このJSFiddleで単純な作業を見つけてください。


15、25、または特定のテキストについてはどうですか?:D
MarceloAgimóvel2018

呼び出し.val()は、リストの最初のオプションの値を取得するだけです。元の質問で尋ねられたように、最初のオプションを実際に選択する(選択する)ことはありません。
粉化

1

私にとっては、次のコード行を追加したときにのみ機能しました

$('#target').val($('#target').find("option:first").val());


0

select要素のjQueryオブジェクトを保存している場合:

var jQuerySelectObject = $("...");

...

jQuerySelectObject.val(jQuerySelectObject.children().eq(0).val());

0

ECMAScript 6で jQueryを使用するこの最良のアプローチを確認してください。

$('select').each((i, item) => {
  var $item = $(item);
  $item.val($item.find('option:first').val()); 
});

0

dropdownそれを使用することにより、任意のオプションを選択できます。

// 'N' can by any number of option.  // e.g.,  N=1 for first option
$("#DropDownId").val($("#DropDownId option:eq(N-1)").val()); 

0

$('select#id').val($('#id option')[index].value)

idを特定の選択タグIDで置き換え、indexを選択する特定の要素で置き換えます。

すなわち

<select class="input-field" multiple="multiple" id="ddlState" name="ddlState">
                                        <option value="AB">AB</option>
                                        <option value="AK">AK</option>
                                        <option value="AL">AL</option>
</select>

したがって、最初の要素の選択には、次のコードを使用します。

$('select#ddlState').val($('#ddlState option')[0].value)

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