последний добавленный параметр в теге select всегда становится его значением

0

Я создаю элемент 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/

  • 1
    Да, я могу воспроизвести в Firefox. Может быть, вы могли бы принять это во внимание и динамически решить, что является последним вариантом с учетом selected атрибута.
  • 0
    это выглядит более сумасшедшим , если вы посмотрите на option:selected фильтр после того , как элементы удаляются из йот jsfiddle.net/arunpjohny/XSfK2/1 , если remove часть комментировал тогда option:selected даст 1 результат еще 3 jsfiddle.net/arunpjohny / XSfK2 / 2 ... что это?
Показать ещё 5 комментариев
Теги:

1 ответ

1
Лучший ответ

Что должен делать этот код?

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);
  • 1
    Я думаю, в этом и заключается хитрость этого вопроса.
  • 0
    Привет, я понимаю, что нет смысла удалять ребенка и добавлять его снова. Это было сделано в основном для поддержания некоторого порядка в опциях, которые, я считаю, я просто смоделировал, чтобы описать мою проблему. В реальном коде мы динамически добавляем опции, основанные на множестве проверок, и даже тогда мне интересно, почему он должен вести себя так
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню