回答:
まず第一に-そのセレクターはかなり遅いです。IDを探してすべてのDOM要素をスキャンします。要素にクラスを割り当てることができれば、パフォーマンスへの影響は少なくなります。
$(".myselect")
しかし、あなたの質問に答えるために、jQueryでselect要素の値を変更するにはいくつかの方法があります
// sets selected index of a select box to the option with the value "0"
$("select#elem").val('0');
// sets selected index of a select box to the option with the value ""
$("select#elem").val('');
// sets selected index to first item using the DOM
$("select#elem")[0].selectedIndex = 0;
// sets selected index to first item using jQuery (can work on multiple elements)
$("select#elem").prop('selectedIndex', 0);
#an-id
*[id$=ends-with]
「要素にクラスを割り当てる」が意味することは、より高速ですが、
これを見つけただけで、私にとってはうまくいき、個人的には読みやすくなっています。
これは、gnarfの回答番号3オプションと同じように実際のインデックスを設定します。
// sets selected index of a select box the actual index of 0
$("select#elem").attr('selectedIndex', 0);
これは以前は機能しませんでしたが、今は機能します...バグを参照してください:http : //dev.jquery.com/ticket/1474
コメントで推奨されるように使用します:
$("select#elem").prop('selectedIndex', 0);
.prop('selectedIndex', 0);
では、.attr()
動作するかどうかに関係なく使用する必要があります:)
私は2015年にこの回答を書いています。何らかの理由で(おそらく古いバージョンのjQuery)、他の回答はどれもうまくいきませんでした。つまり、選択したインデックスが変更されますが、実際のドロップダウンには反映されません。
インデックスを変更する別の方法を次に示します。実際には、ドロップダウンに反映させます。
$('#mydropdown').val('first').change();
prop('selectedIndex', ...);
、選択の変更(ChromeおよびFirefoxでテスト済み)に問題はありません。
change
も呼び出すことにより、選択を変更している人々のために便利/対処することができ、ドロップダウン、上のイベントをprop('selectedIndex', ...)
、というよりもval(...)
。おそらく問題は、あなたがchange
イベントを聞いていることでした、そしてそれがあなたにとってうまくいかなかったものですか?それは単に変えることは事実だprop
... ertyするすべてのイベントを発射するつもりはない
2番目のオプションを選択するには
$('#your-select-box-id :nth-child(2)').prop('selected', true);
ここで、 `trigger( 'change')を追加してイベントを発生させます。
$('#your-select-box-id :nth-child(2)').prop('selected', true).trigger('change');