JQuery создавать варианты выбора списка из JSON, а не как рекламироваться?

Почему это не работает (работает в пустом списке выбора <select id="requestTypes"></select>

$(function() {

        $.getJSON("/RequestX/GetRequestTypes/", showRequestTypes);

    }
    );


    function showRequestTypes(data, textStatus) {

        $.each(data,
            function() {

                var option = new Option(this.RequestTypeName, this.RequestTypeID);
                // Use Jquery to get select list element
                var dropdownList = $("#requestTypes");

                if ($.browser.msie) {
                    dropdownList.add(option);
                }

                else {

                    dropdownList.add(option, null);

                }
            }
            );

        }

Но это делает:

  • Заменить:

    var dropdownList = $("#requestTypes");

  • С простым старым javascript:

    var dropdownList = document.getElementById("requestTypes");

Ответ 1

$("#requestTypes") возвращает объект jQuery, содержащий все выбранные элементы. Вы пытаетесь вызвать метод add() для отдельного элемента, но вместо этого вы вызываете метод add() объекта jQuery, что делает что-то совсем другое.

Чтобы получить доступ к самому элементу DOM, вам нужно обработать объект jQuery как массив и получить из него первый элемент, используя $("#requestTypes")[0].

Ответ 2

По умолчанию селекторы jQuery возвращают объект jQuery. Добавьте это, чтобы вернуть элемент DOM:

 var dropdownList = $("#requestTypes")[0];

Ответ 3

Для таких вещей я использую texotela select box plugin с его простой функцией ajaxAddOption.