<select size="2">
<option selected="selected">Input your option</option>
<option>Input your option</option>
</select>
オプションをエレガントに選択解除するには、jQueryを使用する最良の方法は何ですか?
<select size="2">
<option selected="selected">Input your option</option>
<option>Input your option</option>
</select>
オプションをエレガントに選択解除するには、jQueryを使用する最良の方法は何ですか?
回答:
removeAttrを使用...
$("option:selected").removeAttr("selected");
または小道具
$("option:selected").prop("selected", false)
.val([])
または.prop("selected", false)
-スクロールダウンします。
$("option:selected").prop("selected", false)
時々動作しません。(jquery v1.4.2を搭載したChromeブラウザでは機能しません)
ここにはたくさんの答えがありますが、残念ながらそれらのすべてはかなり古く、したがってattr
/に依存しremoveAttr
ています。
@coffeeyespleaseは、適切なクロスブラウザソリューションを使用することを正しく述べています
$("select").val([]);
別の優れたクロスブラウザソリューションは
// Note the use of .prop instead of .attr
$("select option").prop("selected", false);
Array.indexOf
IE <9のポリフィルが必要であることに注意してください(または、多くのJSライブラリが提供する同等のメソッドを使用できます)。
$('#select').val([]);
か?残念ながら、これはselected="selected"
属性を削除しません。間違ったデータが投稿される可能性があります。このアプローチはお勧めしません!
質問されてからしばらく経ちましたが、私は古いブラウザでこれをテストしていませんが、はるかに簡単な答えは
$("#selectID").val([]);
.val()は、selectでも機能しますhttp://api.jquery.com/val/
$("select option").prop("selected", false);
ユニバーサルに機能します(マルチおよびシングル選択で)。
$('select').val('')
私は単にセレクト自体でこれを使用し、それはトリックをしました。
私はjQuery 1.7.1を使用しています。
これまでの回答は、IE6 / 7の複数選択に対してのみ機能します。より一般的な非マルチセレクトの場合、以下を使用する必要があります。
$("#selectID").attr('selectedIndex', '-1');
これはflyfishr64によってリンクされた投稿で説明されています。これを見ると、マルチ/非マルチの2つのケースがあることがわかります。完全なソリューションのために両方を実行することを妨げるものは何もありません。
$("#selectID").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected");
解決策をたくさんありがとう。
単一選択のコンボリストのソリューションは完全に機能します。多くのサイトを検索した後、これを見つけました。
$("#selectID").attr('selectedIndex', '-1').children("option:selected").removeAttr("selected");
$("option:selected").attr("selected", false);
通常、選択メニューを使用する場合、各オプションには値が関連付けられています。例えば
<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
これで、選択した属性がオプションから削除されませんが、本当に必要なのは値だけです。