2011-08-18 2 views
25

HTMLで選択されたオプションますは選択の最上部に空白のオプションを追加し、IE

<select id="dropdown"> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
</select> 

jQueryの:私はFirefoxやChromeでこれを実行すると

$("#dropdown").prepend("<option value='' selected='selected'></option>"); 

、ドロップダウンを持っています新しく挿入された空白のオプション私がIE8で動かすと、まだVolvoが選択されています。何か案は?

http://jsfiddle.net/YFu2h/

答えて

34

変更もこれに、それがうまくいく:

$("#theSelectId").prepend("<option value=''></option>").val(''); 

http://jsfiddle.net/YFu2h/1/

最初に遭遇したときにIEのみselected属性を評価しているようですselect

+0

ありがとうございました。 – wkm

+0

これは、valを空に設定します。あなたが私の最初に持っている選択された項目を削除する –

+0

@ハリーボッシュ - ...これはOPが求めたものです。 –

3

試してください:あなたが好む場合

$("#dropdown").prepend(new Option('', '', true, true)); 
$("#dropdown option:first").attr("selected", "selected"); 

または、:

$("#dropdown").prepend("<option value=''></option>"); 
$("#dropdown option:first").attr("selected", "selected"); 

最初のオプションを使用するには、わずかに高速です。空白の引用符は、空白の値と空白のテキストを意味するので、必要に応じて入力してください。あなたはprependの中でselected属性を必要とせず、後で追加します。インターネットエクスプローラとは、作成されたばかりのように選択されていると認識していないことです。

+0

ありがとうございました。 – wkm

9

は、私はあなたのコードが動作しない理由はわからないんだけど、これはIEで動作すること、(多分それはIEで、selectedIndexが読み取り専用であるという事実とは何かを持っている)が、:

$("#dropdown").prepend("<option value='' selected='selected'></option>"); 
$("#dropdown")[0].options[0].selected = true; 
+0

ありがとうございました。 – wkm

関連する問題