<select size="2">
<option selected="selected">Input your option</option>
<option>Input your option</option>
</select>
JQueryを使用して、このオプションをエレガントに選択解除するための最善の方法は何ですか?
removeAttr ...を使用してください.
$("option:selected").removeAttr("selected");
または Prop
$("option:selected").prop("selected", false)
ここにはたくさんの答えがありますが、残念ながらそれらのすべてはかなり古く、そのためattr
/removeAttr
に頼っていますが、これは実際には不可能な方法です。
@ coffeeyespleaseは、クロスブラウザによる優れた解決策を使用することを正しく言及しています。
$("select").val([]);
もう一つの良いクロスブラウザソリューションは
// Note the use of .prop instead of .attr
$("select option").prop("selected", false);
あなたはそれが自己テストを実行するのを見ることができます ここ 。 IE 7/8/9、FF 11、Chrome 19でテスト済み。
質問されてからしばらく経ちました。古いブラウザではこれをテストしていませんが、もっと簡単な答えは
$("#selectID").val([]);
.val()はselectでも同様に動作します http://api.jquery.com/val/
$('select').val('')
私は単にselect自体にこれを使用しました、そしてそれはトリックをしました。
私はjQuery 1.7.1です。
これまでの回答はIE6/7の複数選択に対してのみ有効です。より一般的な非マルチセレクトの場合は、次のものを使用する必要があります。
$("#selectID").attr('selectedIndex', '-1');
これはflyfishr64によってリンクされた記事で説明されています。あなたがそれを見れば、あなたは2つのケース - マルチ/非マルチ - があるかどうかを見るでしょう。完全な解決策のためにあなたが両方をつなぐのを止めるものは何もありません。
$("#selectID").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected");
ああjquery。
ネイティブのJavaScriptアプローチがまだあるので、私はそれを提供する必要性を感じます。
var select = document.querySelector('select'); //hopefully you'll use a better selector query
select.selectedIndex = 0; // or -1, 0 sets it to first option, -1 selects no options
そして、これがどれほど速いのかをお見せするために、 ベンチマーク
簡単なグーグルが見つけた この記事 これはIEの単一選択リストと複数選択リストの両方にあなたが望むことをする方法を説明しています。その解決策もまたかなり洗練されているようです。
$('#clickme').click(function() {
$('#selectmenu option').attr('selected', false);
});
$("#selectID option:selected").each(function(){
$(this).removeAttr("selected");
});
これは各項目を繰り返し処理し、チェックされているものだけを選択解除します。
$(option).removeAttr('selected') //replace 'option' with selected option's selector
解決策をどうもありがとう。
単一選択コンボリストの解決策は完璧に機能します。私は多くのサイトを検索した後にこれを見つけました。
$("#selectID").attr('selectedIndex', '-1').children("option:selected").removeAttr("selected");
$("option:selected").attr("selected", false);
もう一つの簡単な方法:
$("#selectedID")[0].selectedIndex = -1
通常私が選択メニューを使うとき、それぞれのオプションはそれに関連した値を持ちます。例えば
<select id="nfl">
<option value="Bears Still...">Chicago Bears</option>
<option selected="selected" value="Go Pack">Green Bay Packers</option>
</select>
console.log($('#nfl').val()) logs "Go Pack" to the console
Set the value to an empty string $('#nfl').val("")
console.log($('#nfl').val()) logs "" to the console
今度はこれはオプションから選択された属性を削除しませんが、私が本当に欲しいのは値だけです。
$( "#select_idオプション:選択")。prop( "選択"、false);
次のように、selectでIDを設定します。<select id="foo" size="2">
次に使用できます:$("#foo").prop("selectedIndex", 0).change();