Почему IE не добавляет <option>в мой dropDown? - PullRequest
0 голосов
/ 30 сентября 2011

Я запускаю этот пример сценария с IE:

var $select = $('#select');
var $button = $('#button');

$button.click(function() {
    var $option = $('<option />');
    $option.text('hello');
    $option.appendTo($select);
});

var $tabs = $('#tabs');
$tabs.tabs();

Это довольно просто: при нажатии на кнопку, option должен быть добавлен в мой выпадающий список.Это прекрасно работает - базовая функция в IE тоже.

Моя проблема:
просто «открыть» dropDown и «закрыть» его снова.Теперь перейдите на вкладку «Кнопка» и нажмите кнопку.Теперь переключитесь на вкладку «select» - должен быть доступен новый option.
Это прекрасно работает на любом браузере, кроме IE ... (иногда IE портится после нескольких переключателей табуляции)

Как можноЯ исправляю свой сценарий?

1 Ответ

3 голосов
/ 30 сентября 2011

Существует гораздо более простой и удобный для браузеров способ добавления опций для полей выбора, чем добавление option элементов DOM ( живой пример ):

$button.click(function() {
    var option = new Option('hello');
    $select[0].options.add(option);
});

Возможно, это будет работать для вас более надежно. (Обратите внимание, что это add, , а не push. Объект options в элементах select на самом деле не массив.)

Вместо options.add вы также можете сделать:

$button.click(function() {
    var options = $select[0].options,
        option  = new Option('hello');
    options[options.length] = option;
});

... который также добавляет к концу, в виде массива. Но add - это надежный кросс-браузер.

...