Я создаю элемент select в js с помощью jquery. Сначала я создаю тег select, а затем добавляю к нему тег параметров. При этом я устанавливаю выбранный атрибут на один из тегов параметров при его создании. Даже тогда, независимо от того, какой тег опции имеет выбранный атрибут, последний добавленный параметр, по-видимому, принимается за значение поля выбора. Это касается только Firefox, хром и IE работает нормально. Это что-то мне не хватает, чтобы понять или известную проблему?
Html
<select id="test">
</select>
JS
var $ =jQuery.noConflict();
$("#test").append("<option value='one' selected='selected'>one</option>");
$("#test").append("<option value='two' >two</option>");
$("#test").prepend("<option value='zero' >zero</option>");
var a = $("#test").children().get();
$("#test").children().remove();
$("#test").append(a);
скриптовая ссылка http://jsfiddle.net/AfT3Z/
Что должен делать этот код?
var a = $("#test").children().get();
$("#test").children().remove();
$("#test").append(a);
Удаление его работает как ожидается http://jsfiddle.net/AfT3Z/1/
РЕДАКТИРОВАТЬ:
Если вам нужен код, который я удаляю, вы можете изменить его следующим образом:
var a = $("#test").html();
$("#test").children().remove();
$("#test").html(a);
Сценарий здесь: http://jsfiddle.net/AfT3Z/2/
Таким образом, вы не потеряете путь к selected
атрибуту.
РЕДАКТИРОВАТЬ № 2:
Вы можете даже клонировать детей, чтобы получить точную копию их:
var $ =jQuery.noConflict();
$("#test").append("<option value='one' selected='selected'>one</option>");
$("#test").append("<option value='two' >two</option>");
$("#test").prepend("<option value='zero' >zero</option>");
var a = $("#test").children().clone();
$("#test").children().remove();
$("#test").append(a);
selected
атрибута.option:selected
фильтр после того , как элементы удаляются из йот jsfiddle.net/arunpjohny/XSfK2/1 , еслиremove
часть комментировал тогдаoption:selected
даст 1 результат еще 3 jsfiddle.net/arunpjohny / XSfK2 / 2 ... что это?