Ответ 1
Измените это, и он будет работать:
$("#theSelectId").prepend("<option value=''></option>").val('');
Кажется, что IE оценивает только атрибут selected
, когда он впервые встречает select
.
HTML:
<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
$("#dropdown").prepend("<option value='' selected='selected'></option>");
Когда я запускаю это в FireFox или Chrome, в раскрывающемся списке будет выбран новый выбранный пустой параметр. Когда я запускаю его в IE8, он по-прежнему выбирает Volvo. Любые идеи?
Измените это, и он будет работать:
$("#theSelectId").prepend("<option value=''></option>").val('');
Кажется, что IE оценивает только атрибут selected
, когда он впервые встречает select
.
Я не уверен, почему ваш код не работает (возможно, он имеет какое-то отношение к тому, что в IE, selectedIndex
- только для чтения), но это работает в IE:
$("#dropdown").prepend("<option value='' selected='selected'></option>");
$("#dropdown")[0].options[0].selected = true;
Попробуйте:
$("#dropdown").prepend(new Option('', '', true, true));
$("#dropdown option:first").attr("selected", "selected");
Или, если вы предпочитаете:
$("#dropdown").prepend("<option value=''></option>");
$("#dropdown option:first").attr("selected", "selected");
Использование первого параметра происходит немного быстрее. Пустые кавычки означают пустое значение и пустой текст, поэтому заполняйте их по мере необходимости. Вы не нуждаетесь в выбранном атрибуте в preend, который мы добавляем позже. Это как-то связано с интернет-исследователем, не признающим, что он помечен как выбранный, поскольку он только что был создан.